使用Makefile.options文件中的定义作为Makefile变量中的条件

时间:2013-02-27 06:11:53

标签: c makefile options

我正在使用clearmake,我正在尝试执行以下操作:

我有一个Makefile.fast.options文件,我在clearmake命令中使用它。在那里我有一个USERFLAGS = -DFAST

在另一个选项文件中我没有-DFAST(Makefile.slow.options)。

在实际的Makefile中,如果定义了FAST,我想将输出二进制名称设置为一个名称,否则我想将其设置为另一个名称..(如果定义了FAST,我希望输出具有。在名字中快,否则我想要.slow

有可能这样做吗?也许我错过了一个更简单的方法来使用选项文件来确定输出文件名?

我还在考虑在makefile选项文件中定义文件名,看起来更容易:

FILENAME = File.Fast

但我想使用选项文件覆盖makefile本身的FILENAME定义..所以,如果在选项文件中设置了FILENAME,请使用它,否则使用makefile中的那个..这是可能的?

谢谢!

1 个答案:

答案 0 :(得分:0)

您不能只更改您构建的文件的名称。您必须在makefile中的规则中实际更改目标的名称。这意味着目标名称必须是可变的。你选择让它变化的方式取决于你。

如果您已经基于快速和慢速包含了不同的选项文件,那么最简单和最明显的方法是在这些选项文件中设置变量。这就是我推荐的方式。

如果你想根据USERFLAGS的值来做,你可以这样做:

ifeq ($(filter -DFAST,$(USERFLAGS)),-DFAST)
    FILENAME = File.fast
else
    FILENAME = File.slow
endif

但是,这似乎更复杂,更难理解(对我而言)。