Возможно ли, чтобы make-файл автоматически перемещал все встроенные объекты в каталог dist? - PullRequest
2 голосов
/ 29 декабря 2011

Рассмотрим следующий сценарий

# Link to executable
result: file1.o file2.o
    gcc dist/file1.o dist/file2.o -o dist/result23

# Assemble to .o object files
file1.o:    file1.s
    gcc -c dist/file1.s
    mv file1.o dist

file2.o:    file2.s
    gcc -c dist/file2.s
    mv file2.o dist

# Compile to .s assembly files
file1.s:    file1.c
    gcc -S file1.c
    mv file1.s dist

file2.s:    file2.c
    gcc -S file2.c
    mv file2.s dist

Вы заметите, что после каждой фазы I mv $some_file dist.Можно ли глобально объявить «когда сделано, переместить результат в каталог dist»

1 Ответ

3 голосов
/ 29 декабря 2011

Нет, такого общего правила для Makefile не существует, потому что это противоречит цели Makefile.Удаляя целевой файл, вы запускаете его (ненужный) римейк при следующем запуске make.

Обычный идиома здесь all и install: цель all строит все цели втекущее дерево сборки, и цель install копирует их в конечные пункты назначения.

Если вы пытаетесь сохранить определенные каталоги (например, исходный каталог) свободными от сгенерированных файлов, ключевые слова "вне сборки дерева"даст вам хорошие советы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...