在构建阶段而不是在配置阶段参数化CMake目标

s1ag04yj  于 2023-05-22  发布在  其他
关注(0)|答案(1)|浏览(176)

CMake中是否有任何工具可以创建一个目标,并在构建时由用户手动提供显式参数?
我想要的是像正常一样运行CMake,然后能够在调用make时提供一个参数,如下所示:

make mytarget MYPARAMETER=123

MYPARAMETER的值将成为gcc调用中的预处理器定义,如gcc -DMYPARAMETER=123中所示。
目标“mytarget”应该以这样的方式设置,即如果MYPARAMETER的值发生更改,则将重新构建目标。
我想用环境变量来做这件事,但实际上任何构建时参数的方案都适用于我的用例。我想避免的是每次更改MYPARAMETER的值时都必须重新配置整个项目,因为它几乎在每次构建时都会更改。

6kkfgxo0

6kkfgxo01#

CMake中是否有任何工具可以创建一个目标,并在构建时由用户手动提供显式参数?
不能。您必须重新运行CMake配置阶段。
您可以创建自己的编译器。使用可执行权限编写以下shell脚本/tmp/cc:

#!/bin/sh
gcc -DMYPARAMETER="$MYPARAMETER" "$@"

使用cmake -DCMAKE_C_COMPILER=/tmp/cc ...配置cmake,并通过首先将变量导出到env MYPARAMTER=123 cmake --build ...进行编译。这样,您就可以将MYPARAMETER的值“注入”到编译器调用中。

相关问题