我们假设我们有一个源文件" a.c"。
" a.c"源文件用于构建程序" Prog1"," Prog2"和' Prog3"。
"Prog1" also uses source file "x.c"
"Prog2" uses source file "y.c"
"Prog3" uses source file "z.c"
假设" a.c"使用一个名为" foo()"的函数仅在" x.c"中定义。因此" Prog1"会建成,但是" Prog2"和" Prog3"不会编译。
还假设" a.c"在构建程序Prog2时构建程序Prog1,bar2()时需要调用函数bar1(),构建程序Prog3时需要调用bar3()。
我们应该如何创建automake Makefile.am来支持这个?
在构建automake文件" Makefile.am"中的每个程序时,我一直在尝试指定不同的预处理程序指令,但到目前为止还看不到它是如何完成的。
任何帮助将不胜感激。感谢。
答案 0 :(得分:1)
最简单的解决方案?为从a.c
源文件构建的三个不同目标文件创建三个不同的规则。
然后,每个规则都可以轻松添加特定构建所需的额外标志。
答案 1 :(得分: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
随后会使用不同选项进行三次编译。