使用不同可执行文件名的参数make

时间:2016-05-19 14:21:46

标签: c++ linux makefile cmake

我有一个c ++代码库。我有一个CMakeLists。当我运行make时,它会创建二进制文件myexec

我希望能够运行,比如make -- v2,并且它会创建完全相同的二进制文件,但称为myexec_v2。如果它不必重新编译所有内容来创建这个二进制文件,而只需要修改文件,那就太好了。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

myexec myexec_v2: $(prerequisites)
    @echo $@

观察:

$ make myexec
myexec
$ make myexec_v2
myexec_v2

如果不需要其他任何内容来编译myexec_v2,那么您就完成了。

有关更多信息,请参见此处:https://www.gnu.org/software/make/manual/html_node/Multiple-Targets.html

这是稍微高级一点的版本

myexec myexec_v2: myexec%: $(prerequisites)
    @echo $@ $*

这称为静态模式规则。中间的myexec%称为目标模式。在此示例中,我们仅使用它来获取所谓的词干。茎将为_v2,变量$*扩展为茎。

有关更多信息:https://www.gnu.org/software/make/manual/html_node/Static-Usage.html

观察:

$ make myexec
myexec
$ make myexec_v2
myexec_v2 _v2

现在您可以在配方中使用$@$*来修改要在其上进行编译的行为。

但是如果您想在食谱中的分支上先阅读以下内容:Basic if else statement in Makefile