CMakeLists.txt 中的 GLM 链接

问题描述 投票:0回答:3

我无法将 glm 库与我的可执行文件链接。我尝试通过链接

${GLM_INCLUDE_DIRS}
${GLM_LIBRARIES}
${GLM_LIBRARY_DIRS}
cmake 变量,但它不起作用。

如何将库和 glm 包含与我的可执行文件链接?

我正在使用

find_package()
方法:

find_package(glm REQUIRED PATHS "${GLM_BINARY_DIR}" NO_DEFAULT_PATH)

并且没有任何问题

find_package()
但下面的这些状态消息没有显示任何内容 :

message(STATUS "GLM includes ${GLM_INCLUDE_DIRS}")
message(STATUS "GLM libraries ${GLM_LIBRARY_DIRS}")
c++ cmake glm-math
3个回答
7
投票
GLM 的

Config 脚本定义了 IMPORTED 目标

glm::glm
。 因此,在 CMake 代码中使用 GLM 的正确方法是链接到该目标。 这在文档中明确写过:

set(glm_DIR <installation prefix>/lib/cmake/glm) # if necessary
find_package(glm REQUIRED)
target_link_libraries(<your executable> glm::glm)

GLM_LIBRARIES
GLM_INCLUDE_DIRS
这样的变量通常由 Find 脚本定义(随 CMake 或消费者项目一起提供)。

Config脚本随安装包一起提供,通常定义导入的目标。

GLM 没有查找脚本(请参阅 FindGLM.cmake 不在 glm 0.9.7 中,它是在 CMAKE 中查找库的已弃用方法吗?),并且

PATHS
调用中的
find_package
选项显式请求配置脚本.


0
投票

老实说,我正在使用 MacOS,并且我发现从 github 安装 GLM 可以工作:

git clone https://github.com/g-truc/glm

然后我构建并安装它:

cd /path/to/glm
cmake \
    -DGLM_BUILD_TESTS=OFF \
    -DBUILD_SHARED_LIBS=OFF \
    -B build .
cmake --build build -- all
cmake --build build -- install

这对我有用:https://github.com/g-truc/glm


-1
投票

我的方法是错误的。

摘自OpenGL GLM官方页面:

OpenGL Mathematics (GLM) 是基于 OpenGL 着色语言 (GLSL) 规范的图形软件的纯标头 C++ 数学库。

所以,我只需要指定构建的 GLM 库的

/include
路径,链接器在链接给定目标时应在其中搜索库。

这可以通过 cmake

target_include_directories()
函数来处理。这解决了我的问题:

target_include_directories(myExecutable "${GLM_BINARY_DIR}/include")

${GLM_BINARY_DIR}
由我定义,指向 GLM 二进制文件的存储位置。

© www.soinside.com 2019 - 2024. All rights reserved.