为不同的可执行文件名称制作参数
Posted
技术标签:
【中文标题】为不同的可执行文件名称制作参数【英文标题】:make with argument for different executable name 【发布时间】:2016-05-19 14:21:46 【问题描述】:我有一个 C++ 代码库。我有一个 CMakeLists。当我运行make
时,它会创建二进制文件myexec
。
我希望能够运行make -- v2
,它会创建完全相同的二进制文件,但称为myexec_v2
。如果它不必重新编译所有内容来创建此二进制文件,而只需重新编译修改过的文件,那就太好了。
我该怎么做?
【问题讨论】:
不是答案,但不可能的解决方法是编写一个小脚本来执行 1) make 然后 2) 根据使用“移动”或'copy',哪个合适? 这有帮助吗? ***.com/questions/6273608/… 【参考方案1】:myexec myexec_v2: $(prerequisites)
@echo compile $@
观察:
$ make myexec
compile myexec
$ make myexec_v2
compile myexec_v2
如果编译 myexec_v2
不需要其他任何东西,那么你就完成了。
查看这里了解更多信息:https://www.gnu.org/software/make/manual/html_node/Multiple-Targets.html
这是一个稍微高级一点的版本
myexec myexec_v2: myexec%: $(prerequisites)
@echo compile $@ $*
这称为静态模式规则。中间的myexec%
称为目标模式。在这个例子中,我们只使用它来获取所谓的词干。词干为_v2
,变量$*
扩展为词干。
更多信息:https://www.gnu.org/software/make/manual/html_node/Static-Usage.html
观察:
$ make myexec
compile myexec
$ make myexec_v2
compile myexec_v2 _v2
现在您可以在配方中使用$@
或$*
来修改要编译的行为或其他。
但如果你想这样做,如果配方中的分支首先阅读此内容:Basic if else statement in Makefile
【讨论】:
以上是关于为不同的可执行文件名称制作参数的主要内容,如果未能解决你的问题,请参考以下文章