6
我有一个大型的跨平台项目,需要在各个地方构建;在某些地方,可能有不同的UI工具包,声音API等,我试图找出自动配置基于哪些库存在配置哪些目标的最佳方法。基于图书馆存在有条件的CMake构建目标
我想要操作的代码,例如:
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_library文档意味着变量PC_EGL_NOTFOUND应该被设置,但它不是(CMake 2.8.5)。那么,使用find_library来确定一个目标是否应该存在的适当方法是什么?这似乎是使用
if (NOT PC_EGL MATCH "-NOTFOUND")
是有点脆弱和繁琐,所以有用于基于wheter库被发现在所有CMake的一个命令路径更好的机制?
谢谢!这看起来应该很容易在文档或例子中找到,这是我用CMake的一个常见问题 - 一旦我知道如何做一些简单的事情,但是找到如何做,而不是那么多。 – fluffy 2012-04-04 17:44:09