Cmake的option选项在C++代码中失效

最近项目从c到c++转型,源文件由.c->.cpp后,cmake中option设置的选项在源码中失效了。

Cmake中option设置如下:

img

build之后,
CmakeCache.txt文件中,该选项也是正常的,如下:

img

.cpp源码中代码判断如下,判断了是否有定义,定义了就打印,但是从代码执行来看,压根没有打印,并且用gdb调试跟进也是没有走到此逻辑。代码如下:

img

对此,本人感到很困惑,有没有同志遇到过同样的问题?

cmake option不是源代码宏,用add_defintions定义源码宏

option(TEST_OPTION "test opiton" OFF)
if (TEST_OPTION)
add_definitions(-DTEST_OPTION)
endif()

Android Studio Cmake踩坑(option 设置不生效)
可以借鉴下
https://blog.csdn.net/qq_36383272/article/details/118157815

经chatgpt的结合回答:根据您的描述,您在cmake中通过option设置了一个选项,并且在C++源代码中进行了宏定义判断,但是程序运行时并没有按照预期打印相关信息,这可能是由于以下原因导致的:

  1. 宏定义名称不一致:在CMakeLists.txt文件中,您的option设置名称为"AIR_PRODTOCOL_SIEN",但是在C++源代码中的宏定义名称为"AIR PROTOCOL SIGN",这两者的名称不一致,可能导致宏定义无法生效。您可以尝试将它们统一起来,例如将option设置为"AIR_PROTOCOL_SIGN",将宏定义名称也修改为"AIR_PROTOCOL_SIGN"。
  2. 宏定义位置不正确:在C++源代码中,宏定义通常放在头文件中,以确保可以在整个程序中生效。您可以在头文件中添加宏定义,并在需要打印相关信息的地方使用宏定义。
  3. 其他问题:如果以上两个方面没有问题,您可以检查其他可能影响宏定义的因素,例如编译器选项、预处理器选项等。
    如果您仍然无法解决这个问题,建议您将具体的代码和CMakeLists.txt文件提供出来,以便更好地帮助您解决问题。