凡科建站弊端,有个网站经常换域名,wordpress数字市场汉化,seocui cn需求
需要实现#xff0c;在cmake中定义宏定义#xff0c;可以#xff1a;1#xff09; 在code中可以使用#xff1b;2#xff09; 在cmake中可以识别是否已定义
问题
宏定义#xff0c;cmake有add_definitions函数#xff0c;直观的实现方法如下。
cmake_minimum…
需求
需要实现在cmake中定义宏定义可以1 在code中可以使用2 在cmake中可以识别是否已定义
问题
宏定义cmake有add_definitions函数直观的实现方法如下。
cmake_minimum_required(VERSION 3.13)
project(main)# 定义宏
add_definitions(-DMY_MACRO)# 判断宏是否存在
if(DEFINED MY_MACRO)message(STATUS MY_MACRO已定义)
else()message(STATUS MY_MACRO未定义)
endif()定义宏后上述要求的第1条正常使用但是第2条始终提示没有定义改宏定义。ChatGPT也识别不到这个错误甚至还会给一个错误的demo example。后来查找cmake官网才找到原因原来宏定义Macro并不是变量variables不支持通过if()这样的方法判断。https://cmake.org/cmake/help/latest/command/if.html#defined
可能宏定义的在cmake解析CMakeLists.txt时候并没有生成而是在make的时候才会生成。
解决方法
一个间接的实现方式如下
cmake_minimum_required(VERSION 3.13)
project(main)# 设置变量
set(MY_MACRO FORCE)# 判断变量的值并定义宏
if(DEFINED MY_MACRO)add_definitions(-DMY_MACRO)message(STATUS MY_MACRO已定义)
else()message(STATUS MY_MACRO未定义)
endif()