gpt4 book ai didi

build - CMake 根据库的存在有条件地构建目标

转载 作者:行者123 更新时间:2023-12-04 14:04:10 27 4
gpt4 key购买 nike

我有一个大型跨平台项目,需要在各个地方构建;在某些地方,可能会使用不同的 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_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")

有点脆弱和繁琐,那么是否有更好的机制来根据是否找到库来确定 CMake 命令路径?

最佳答案

简直就是

if(PC_EGL AND PC_GLESv2 AND PC_GLESv2)

CMake 对待 0 , FALSE , OFF , ANYTHING-NOTFOUND作为假的。

关于build - CMake 根据库的存在有条件地构建目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10003238/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com