为不同的可执行文件名称制作参数

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

【讨论】:

以上是关于为不同的可执行文件名称制作参数的主要内容,如果未能解决你的问题,请参考以下文章

如何获取窗口的可执行文件名

如何在c ++中的可执行文件附近的文件夹中打开图像

在没有 maven 的情况下启动码头的可执行战争文件

相同的源代码,不同的可执行文件大小?

IPC 通过两个不同的可执行文件?

C#将带有标志(/ arg1 / arg2)的参数传递给exe