в make-файле, объявляя фальшивую цель подстановочным знаком

Я хочу объявить свою цель с подстановочными знаками как фальшивую, но фальшивая не поддерживает подстановочные знаки:

Мой make-файл:

%.config:
        gcc <<compile>>

Я хочу, чтобы пользователь мог использовать мой make-файл для компиляции проекта, используя определенный файл конфигурации:

make something.config
make something_else.config

очевидно, мне нужно, чтобы моя цель была фальшивой, потому что целевые файлы существуют, а просто писал:

.PHONY: %.config

не работает. Я видел здесь, что makeapp поддерживает другой синтаксис, который может помочь:

$(phony %.config): ...

но я могу использовать только make, а не makeapp.

Есть ли способ сделать это с помощью make?


person user1340472    schedule 20.06.2012    source источник
comment
Я хочу, чтобы пользователь мог использовать мой make-файл для компиляции любого файла .c. Что? Марка не для этого.   -  person Ignacio Vazquez-Abrams    schedule 20.06.2012
comment
Это просто пример, чтобы показать мою проблему. На самом деле пользователь запускает make ‹config file›| и makefile компилирует код с этой конфигурацией   -  person user1340472    schedule 20.06.2012
comment
@ user1340472: Тогда вы можете обновить свой вопрос, чтобы показать код, который более точно отражает то, что вы пытаетесь сделать? make config_file не очень похоже на make source_file.c...   -  person Oliver Charlesworth    schedule 20.06.2012


Ответы (1)


Это противоречивые цели. Фальшивая цель — это та, которая не соответствует реальному файлу. В вашем случае файл существует, но на самом деле это не цель.

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

make something_else
make CONFIG=something_else.config
person Oliver Charlesworth    schedule 20.06.2012