如何检查CMakeLists.txt文件中是否已定义某些内容

时间:2013-06-03 10:01:20

标签: c++ cmake

我在CMakeLists文件中有这样的东西:

set(CMAKE_CXX_FLAGS "-g -Wextra -DFLAG")

稍后在同一个CMakeLists.txt文件中,我需要检查是否已定义FLAG。有可能做这样的事吗?

IF(FLAG)
    target_link_libraries(${PRODUCT} ${LIBS1}) 
ELSE()
    target_link_libraries(${PRODUCT} ${LIBS2}) 
ENDIF()

我还要检查我的c ++代码中是否已定义FLAG。如果已定义,我将使用LIBS1中的代码,否则我将使用LIBS2库集中定义的代码。

#ifdef FLAG
  // some code that uses LIBS1 libraries 
#else
  // some code that uses LIBS2 libraries  
#endif

1 个答案:

答案 0 :(得分:1)

我不知道直接的方式,但您可以使用字符串匹配来获取标志:

STRING(REGEX MATCH "FLAG" result ${CMAKE_CXX_FLAGS})
IF(${result} MATCHES "FLAG"))
    #Add your code
ENDIF()