我正在寻找一种解决方案,让我可以使用两个目录中存在的头文件中定义的不同常量值,构建相同源代码的2个不同图像。
要清楚,这是我的目录树:
program/
configuration1/
header1.h
header2.h
...
configuration2/
header1.h
header2.h
...
src/
All the source code common to both images
我希望makefile能够自动构建两个图像(称为image1.out和image2.out),包括分别来自第一个和第二个配置目录的文件。
我的想法是创建两个不同的规则,并在两者之间更改CFLAGS。首先,CFLAGS包括"-I../configuration1"
,在第二个中,它包括"-I../configuration2"
。
但我读了这篇文章(https://www.gnu.org/software/make/manual/html_node/Target_002dspecific.html):
请注意,给定的先决条件最多只能在每次调用make时生成一次。如果同一文件是多个目标的先决条件,并且每个目标对同一个特定于目标的变量具有不同的值,那么要构建的第一个目标将导致构建该先决条件并且先决条件将继承目标 - 来自第一个目标的特定值。它将忽略来自任何其他目标的特定于目标的值。
所以我不知道如何强制重新编译两个规则中的对象(因为这些对象将取决于包含的标题,当然......)。 有没有办法强制重新构建第二条规则中的所有内容?
我使用gcc在Linux环境(Redhat)中工作。