如何测试CMake是否找到了一个包含find_library的库

时间:2015-04-15 17:45:24

标签: cmake

我找到了具有find_library功能的库

find_library(MY_LIB lib PATHS ${MY_PAHT})

如果找到了库,${MY_LIB}将指向正确的位置。 如果找不到该库,${MY_LIB}将为MY_LIB-NOTFOUND

但我如何测试呢?

if(${MY_LIB} EQUAL 'MY_LIB-NOTFOUND') 
    ...
endif()

始终评估为false。

2 个答案:

答案 0 :(得分:23)

您可以简单地测试变量,例如:

find_library(LUA_LIB lua)
if(NOT LUA_LIB)
  message(FATAL_ERROR "lua library not found")
endif()

示例输出:

CMake Error at CMakeLists.txt:99 (message):
  lua library not found


-- Configuring incomplete, errors occurred!

请注意,我们使用

if(NOT LUA_LIB)

而不是

if(NOT ${LUA_LIB})

因为different semantics

使用${},变量LUA_LIB在评估if()之前被替换。如 评估的一部分,然后内容将被解释为变量名称, 除非它与常量的定义相匹配。这不是我们想要的。

答案 1 :(得分:6)

简单地做

if(MY_LIB)
    #found
    ...
else()
    #not found
    ...
endif()