1. Makefile для компиляции программы
1 привет: hello.c 2 НКИ - о привет hello.c 3 чистых: 4 ет -f привет
Вышеуказанная четыре строки , сохраненные как Makefile (примечание должна быть ключом Tab для отступа второй и четвертой линии, не может быть пробел отступа)
сделать заказ в соответствии с обновленными временными метками файлов, чтобы решить, какие файлы должны быть повторно, что позволяет избежать компилятор уже скомпилированные, никаких изменений в программе, компилятор может значительно повысить эффективность работы.
2. Makefile для компиляции нескольких программ
1 тест: main.c sub.c 2 GCC -o тест main.c sub.c
Это может составить несколько исходных файлов. Но есть недостаток, если вы измените файл заголовок .h, Makefile не будет выполнена, поскольку Makefile не обнаружила обновление файлов.
1 тест: main.c sub.c sub.h 2 GCC -o тест main.c sub.c
Эта проблема может быть решена. Однако, если вы измените исходный файл, то все исходные файлы должны быть повторно, если номер исходного файла, будет очень неэффективно.
1 тест: main.o sub.o 2 GCC - O тест main.o sub.o 3 4 main.o: main.c 5 GCC -c - о main.o main.c 6 7 sub.o: sub.c 8 НКУ -c - о sub.o sub.c - 10 чистые: 11 ет тест * .o -f
Это изменение исходного файла, вы будете иметь только перекомпилировать измененные исходные файлы. Повышение эффективности кодирования. Но, как и слишком много правил слишком много, не поддерживает обнаружение файлов заголовков.
1 тесты: main.o sub.o 2 НКА - о тесте main.o sub.o 3 4 % .o:% .c 5 НКА -c -o $ @ $ < 6 7 чистые: 8 ет тест * .o - е
Это выглядит довольно аккуратные. Но до сих пор не может обнаружить файлы заголовков.
. 1 Тест: main.o sub.o 2 НКА - O Тест main.o sub.o . 3 . 4 % .o:% .c . 5 НКА -C -o $ @ $ < . 6 . 7 sub.o: sub.h . 8 / / бок с ТАВ 9. // боковой пустой строки без TAB 10 Clean: . 11 RM Test -f * .o
Физическая экспертиза может заголовок, но файлы заголовки должны быть добавлены вручную.
. 1 OBJS: = main.o sub.o 2 . 3 Тест: $ (OBJS) 4. GCC Test -o $ ^ 5. 6. 7. # Определяет , есть ли необходимость зависимостей 8. # .Main.od .sub.od 9. Dep_files: = $ ( в цикле , Р, $ (OBJS), $ (F) 2.d.) 10 dep_files: = $ ($ подстановочные (dep_files)) . 11 12 # , чтобы включить его зависимостей 13 ifneq ($ (dep_files),) 14 включаемого $ ( dep_files) 15 ENDIF 16 . 17 18 % .o:% .c . 19 НКА-, -MD, -C -o $ D $ @ $ @ <.. 20 21 22 Чистота: 23 Кт * .o тест - F 24 25 distclean: 26 гт $ (dep_files) * .o тест -f
Это будет автоматически обнаруживать файлы заголовков.