如何测试 CMake 是否找到了 find_library 的库

How to test if CMake found a library with find_library

我找到了具有 find_library 功能的库

find_library(MY_LIB lib PATHS ${MY_PATH})

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

但是我该如何测试呢?

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

始终计算为 false。

简单做

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

您可以直接测试变量,例如:

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() 之前被替换。作为 评估的一部分内容将被解释为变量名, 除非它匹配常量的定义。而这不是我们想要的。