2016-09-17 6 views
0

Таким образом, некоторые из *.c файлов, bin_PROGRAMS в моей установке AutoMake зависит от no_common.h, который генерируется путем создания символической ссылки с main.h, теперь до некоторых последних изменений в моем Makefile.amno_common.h был включен в bin_PROGRAMS, чтобы он получился таким, каким он должен быть, но это также сделало его таким, чтобы он был установлен в /usr/bin вместе с двоичными файлами, созданными make, чего я не хочу.Укажите зависимость `bin_PROGRAMS`, не говоря Automake, как построить` bin_PROGRAMS`

Я знаю, что я мог бы просто использовать что-то вроде этого в моем Makefile.am файле:

$(bin_PROGRAMS): no_common.h 

, но не то, что будет означать, что я должен сказать make точно, как я хочу bin_PROGRAMS быть построен? Поместив no_common.h обратно в bin_PROGRAMS, а затем добавив его в noinst_HEADERS, разрешите эту проблему?

Можно ли это сделать, есть ли какой-нибудь другой хитроумный трюк, который я мог бы использовать, или я просто прошу чего-то, что нельзя сделать?

ПРИМЕЧАНИЕ: Я не хочу, чтобы изменить файл #include от no_common.h к main.h в пораженных файлов. (Да, я знаю, что я, вероятно, придирчивый).

ответ

2

Automake предлагает переменную BUILT_SOURCES для решения этой проблемы.

Файл, указанный в BUILT_SOURCES, будет создан в начале make - перед любыми компиляциями. Однако никакой другой зависимости не подразумевается; то есть файл создается, но не компилируется и не считается зависимым от любого другого конкретного .o; который именно вы хотите.

Так что в вашем случае вы бы просто сделать:

BUILT_SOURCES = no_common.h 

 Смежные вопросы

  • Нет связанных вопросов^_^