尝试编写构建文件时,我一直遇到cmake的问题。该find_package命令应该定义要与include_directories指令一起使用的变量,但是这样做的前后不一致。例如,考虑以下代码:
find_package(OpenGL REQUIRED)
find_package(glm REQUIRED)
message(STATUS ${GLM_INCLUDE_DIR})
message(STATUS ${GLM_INCLUDE_DIRS})
message(STATUS ${OPENGL_INCLUDE_DIR})
message(STATUS ${OPENGL_INCLUDE_DIRS})
message即使第二张和第三张为“ DIR”,另一张为“ DIRS”,也仅打印第二张和第三张
有没有一种标准的方法来确定您应该使用哪个?
实际标准是*_LIBRARIES和*_DIRS,即复数变量名称是结果变量。因此,它们只能从中读取而不是写入。
同样,使用写得很好的现代FindModule,即使这些变量对用户也很少有用,因为导入的目标将包含所有相关信息。因此,用户可以执行以下操作而无需直接使用结果变量:
add_executable(myexe OpenGL::GL)
add_library(mylibrary PUBLIC OpenGL::GL)
但是,知道如何使用FindModule的正确方法是只阅读文档,该文档将显式地位于docs或FindModule.cmake文件开头的CMake注释中。
所有标准模块文件都在CMake安装子目录“模块”中,并且大多数(全部)具有CMake文档。
位置提示变量通常被命名为*_INCLUDE_DIRAND *_LIBRARY,您可以在调用find_package()in 之前先CMakeLists.txt进行设置,也可以使用cmake -Dor cmake-gui或进行设置ccmake。
| 归档时间: | 
 | 
| 查看次数: | 346 次 | 
| 最近记录: |