...
set(MY_EXE_FOO "bar" CACHE STRING "The value to use for the FOO preprocessor define for my_exe")
add_executable(my_exe main.cpp)
target_compile_definitions(my_exe PRIVATE "FOO=${MY_EXE_FOO}")
使用方法:
# set up with default (you could pass -D MY_EXE_FOO=... immediately to change the default)
cmake -S source_dir -B build_dir
cmake --build build_dir
# reconfigure the cmake project changing the define from bar to baz
cmake -D MY_EXE_FOO=baz build_dir
# rebuild with the new configuration
cmake --build build_dir
1条答案
按热度按时间kupeojn61#
您可以使用
(CMAKE_)<LANG>_COMPILER_LAUNCHER
来实现此目的,但我强烈建议不要这样做,因为生成的项目无法判断是否需要重新编译源代码。此外,如果涉及到环境变量,则使用最后一次配置重新构建项目并非易事。此外,当使用环境变量时,只构建项目的一部分基本上是不可能的;很难判断项目的哪一部分是用环境变量的给定值编译的。相反,我建议添加一个cmake缓存变量,可以通过简单地重新配置项目来调整,这确实会导致cmake进行必要的更新,以确保重新编译预处理器定义的文件。
使用方法:
注意:你甚至可以为你的项目并行设置多个构建目录。(这里假设没有任何cmake逻辑在源代码树中生成文件。)