2016-06-16 4 views
1

Предположим, что у нас есть исходный файл «a.c».Установить предпроцессорную директиву только для одной программы в файле Automake

В "AC" исходный файл используется в строительных программ "PROG1", "PROG2" и «Prog3" .

"Prog1" also uses source file "x.c" 
"Prog2" uses source file "y.c" 
"Prog3" uses source file "z.c" 

Предположим, что "ас" использует функцию под названием "Foo()", который определяется только «xc», поэтому «Prog1» будет построен, но «Prog2» и «Prog3» не будут компилироваться.

Также предположим, что «ac» необходимо вызвать функцию bar1() при создании программы Prog1, bar2() при построении программы Prog2 и bar3() при построении программы Prog3.

Как создать автомат ake Makefile.am, чтобы поддержать это?

Я пытаюсь указать различные директивы препроцессора при создании каждой программы в файле automake «Makefile.am», но до сих пор не мог понять, как это делается.

Любая помощь будет оценена по достоинству. Благодарю.

+1

Покажите нам свою попытку. –

ответ

1

Простейшее решение? Создайте три разных правила для трех разных объектных файлов, все из которых построены из исходного файла a.c.

Затем каждое правило может легко добавить дополнительные флаги, необходимые для конкретной сборки.

0
bin_PROGRAMS = prog1 prog2 prog3 

prog1_SOURCES = a.c x.c 
prog1_CPPFLAGS = -DPROG1 

prog2_SOURCES = a.c y.c 
prog2_CPPFLAGS = -DPROG2 

prog3_SOURCES = a.c z.c 
prog3_CPPFLAGS = -DPROG3 

Но использовать это, вы должны убедиться, что вы называете AM_PROG_CC_C_O в вашем configure.ac, поскольку a.c затем компилируется в три раза с различными параметрами.