Из того, что я могу понять из вашего вопроса, вам не нужен файл заголовка для компиляции кода C с использованием Makefile.Makefile не имеет ничего общего с исходным кодом.Все, что делает Makefile - это запускает команду (и), если указанные вами файлы были обновлены.
# Makefile
outfile: infile1 infile2
command1
command2
# ^ commands MUST begin with a tab
Если вы запускаете make outfile
, вот что происходит:
- Если
outfile
не существует, то make
запускает command1
, а затем запускает command2
. - Если существует
outfile
, но infile1
и infile2
с тех пор не обновлялось, make
ничего не будет делать. - Если существует
outfile
и infile1
или infile2
имеют , обновленное с outfile
был последний раз изменен, затем make
запустит command1
и затем запустит command2
.
Это основы make
и Makefiles.Файлы (outfile
, infile1
, infile2
и т. Д.) И команды (command1
, command2
) могут быть что угодно по вашему желанию.Их также может быть любое количество.
Когда дело доходит до компиляции кода, make
очень полезен, потому что вы можете использовать его для перекомпиляции двоичного файла (также называемого исполняемым файлом), если исходные файлыизменяются, и это именно то, что вам нужно.
Например, этот make-файл создает двоичный файл (исполняемый файл) из двух исходных файлов (и без заголовочных файлов):
# Makefile
# executable file is called "prog"
prog: a.o b.o
gcc -o prog a.o b.o
# ^^^^^^^
# tell gcc to name the output file "prog"
# compile the first source file "a.c" to produce the object file "a.o"
a.o: a.c
gcc -c a.c
# compile the second source file "b.c" to produce the object file "b.o"
b.o: b.c
gcc -c b.c
Еслиу вас есть файлы заголовков, тогда вам нужно изменить строки компиляции следующим образом:
# Makefile
# ...
# compile a.c, which has an associated header file a.h
a.o: a.c a.h
# ^^^ add the header file here
gcc -c a.c
Если вам не ясно, что такое файлы заголовков, найдите их где-нибудь или задайте другой вопрос о них.