Build CMake根据库的存在有条件地创建目标
我有一个大型跨平台项目,需要在不同的地方建设;在某些地方,可能会提供不同的UI工具包、声音API等,我正试图找出最佳方法,根据存在的库自动配置哪些目标 我正在尝试的代码是,例如:Build CMake根据库的存在有条件地创建目标,build,cmake,Build,Cmake,我有一个大型跨平台项目,需要在不同的地方建设;在某些地方,可能会提供不同的UI工具包、声音API等,我正试图找出最佳方法,根据存在的库自动配置哪些目标 我正在尝试的代码是,例如: find_library(PC_EGL EGL) find_library(PC_GLESv2 GLESv2) find_library(PC_Xxf86vm Xxf86vm) if (DEFINED PC_EGL AND DEFINED PC_GLESv2 AND DEFINED PC_Xxf86vm) add_
find_library(PC_EGL EGL)
find_library(PC_GLESv2 GLESv2)
find_library(PC_Xxf86vm Xxf86vm)
if (DEFINED PC_EGL AND DEFINED PC_GLESv2 AND DEFINED PC_Xxf86vm)
add_executable(foo foo.cpp)
target_link_libraries(foo ${PC_EGL} ${PC_GLESv2} ${PC_Xxf86vm})
endif()
但是,如果我在一个没有libGLESv2可用的系统上构建它,我会得到以下错误:
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
PC_GLESv2
linked by target "foo" in directory /path/to/platform
find_库文档意味着应该设置变量PC_EGL_NOTFOUND,但它不是(cmake2.8.5)。那么,使用find_库确定目标是否应该存在的合适方法是什么?好像是用
if (NOT PC_EGL MATCH "-NOTFOUND")
是有点脆弱和微妙的,那么有没有更好的机制根据是否找到库来确定CMake命令路径呢?这很简单
if(PC_EGL AND PC_GLESv2 AND PC_GLESv2)
CMake将
0
、FALSE
、OFF
、ANYTHING-NOTFOUND
视为FALSE。谢谢!这似乎应该很容易在文档或示例中找到,这是我在CMake中遇到的一个常见问题-一旦我知道如何做某件事,这很容易,但找到如何做就不那么容易了。