cmake - Cmake 命令行参数与 add_compile_definitions
问题描述
cmake .. -DVAR="something"
使用 CMakeLists.txt 编译和cmake ..
使用CMakeLists.txt有什么区别add_compile_definitions(VAR="something")
?如何实现与命令行参数相同的行为,但使用 CMakeLists.txt?
解决方案
用 cmake .. -DVAR="something" 和 cmake .. 编译但在 CMakeLists.txt 中使用 add_compile_definitions(VAR="something") 有什么区别?
cmake命令行选项执行以下-D
操作:“创建或更新 CMake CACHE 条目”。-DVAR=something
集合的cmake
变量VAR
为something
。
add_compile_definitions确实:“将预处理器定义添加到源文件的编译中”。VAR
在这种情况下,它添加了一个要设置的宏"something"
(我认为包括引号)。
他们做不同的事情。
更喜欢target_compile_definitions
而不是add_compile_definitions
.
如何实现与命令行参数相同的行为,但使用 CMakeLists.txt?
如果要将 cmake 变量设置VAR
为something
:
// in CMakeLists.txt
set(VAR something)
但这不会在 cmake 缓存中设置变量。同样的行为将是相当的:
set(VAR something CACHE STRING "" FORCE)
推荐阅读
- c++ - C ++如何拥有相同方法的不同版本?
- eclipse - 如何将eclipse默认对话框更改为调试配置对话框
- c# - C# 表达式自行转换为不同的表达式
- javascript - TypeError: default.a.createClass 不是 React v16 中的函数
- php - 复选框列表 Symfony 4
- mysql - Sequel Pro 和 MySQL 连接失败
- algorithm - (大概)一个段树应用
- websocket - 苦苦挣扎 apollo-link-ws x-api-key 授权
- python - Python 计算轮班工作的休息日
- javascript - 来自两个实体集的 xml 视图绑定数据