如何测试 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})
对于 ${}
,变量 LUA_LIB
在计算 if()
之前被替换。作为
评估的一部分内容将被解释为变量名,
除非它匹配常量的定义。而这不是我们想要的。
我找到了具有 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})
对于 ${}
,变量 LUA_LIB
在计算 if()
之前被替换。作为
评估的一部分内容将被解释为变量名,
除非它匹配常量的定义。而这不是我们想要的。