Включите :? Makefile, $ ^, $ @, $, $ & л ;, $ (@ D) $ (@ F), определяется с помощью подробного

Перепечатано из: https://blog.csdn.net/qq_39498080/article/details/79237260

 

Makefile $ ^, $ @, $, $ & л;?, $ (@ D) $ (@ F) определяется с помощью подробного

    Каждый раз, когда я вижу Makefile, там всегда сталкиваются некоторыми переменные не может вспомнить, что вам нужно пойти, чтобы найти информацию, есть время сегодня, на пути к нескольким общим переменным изученным, то, как воспоминания суммированы полному хода, чтобы вспомнить их чувство не сложно, особенно метод для всех, чтобы поделиться.

 

Определения переменных:

$ ^

Все полагаются на набор целей. Разделенный пробел. Если есть несколько дубликатов в целевой зависимости, что этот переменный

Удаляет повторяющиеся зависит от цели, оставляя только один.

 

$ @

Правило представления Целевой набор файлов. В правилах модели, если есть несколько целей, то «$ @» является матч

Определение схемы Set целевой

 

$?

Новый набор целевых все зависимого, чем цель. Разделенный пробел.

 

$ <

Положитесь первый гол во имя цели. Если цель зависит режим (то есть, «%») определена, то «$ <» будет

Модель в соответствии с серией наборов файлов. Обратите внимание, что вынимают один за другим.

 

$ (@ D)

Сказал: "$ @" раздел каталога (не слэш в конце), если "$ @" значение "реж / foo.o", затем "$ (@ D)" на

Это «реж», а если «$ @» не содержит косой черты, то его значение «» (текущий каталог).

 

$ (@ F)

Упомянутый, "$ @" часть файла, если "$ @" значение "реж / foo.o", а затем "$ (@ F)" является "foo.o", "$ (@ F)," фазовый

Когда в функции "$ (notdir $ @)"

 

Подробный пример:

Там main.C test.c test1.c test2.c четыре исходных файлов

 

Пример 1:

% .O:% .c

GCC -c $ <-o $ @

 

Таким образом, компилятор генерирует соответствующий файл с о файле $ <с, принятых от имени каждого файла, файл $ @ C каждого представитель соответствующего объектного файла

 

 

Пример 2:

главная: main.o test.o test1.o test2.o

НКУ -o $ @ $ ^

O собрать все основные файлы для создания исполняемого файла, так что $ ^ представляет зависимую набор файлов (main.o test.o test1.o test2.o), @ имя целевого файла (основной)

 

Пример 3:

Lib: test.o test1.o test2.o

аг г Lib $?

 

Обновление зависимых файлов в библиотеку Упаковать Lib, если только test1.o обновления, $? Представители Test1.o, если test.o test1.o обновлены, $? Test.o представители test1.o из коллекция.

 

Краткое описание:

 

$ ^ Все зависит от множества целей

$? Все зависит от обновления целевой коллекции

$ <Целевой зависящих от первой цели, зависит от определения в режиме (%), вынимают одну за другой

$ @ Целевой файл

$ (@ D) каталог часть $ @

$ (@ F) файлы являются частью $ @

 

Метод памяти:

 

ДСТ: source1.o source2.o source3.o source4.o  

хх ......

 

$ ^ Где ^ представляет уровень определенного диапазона, содержащий набор всех зависимых файлов (source1.o source2.o source3.o source4.o)

$? Где? Укажите, какие полагаются обновление файла неизвестны, есть обновленный набор зависимостей (?)

$ <Где <это значение из набора, зависимость первого файла (source1.o)

$ @ Целевой файл (ДСТ)

$ (@ D) каталог часть $ @

$ (@ F) файлы являются частью $ @

рекомендация

отwww.cnblogs.com/timmgao/p/11018928.html