CMakeLists.txt 中的 GLM 链接
GLM linking in CMakeLists.txt
我不能 link glm 库与我的可执行文件。我尝试 link 通过
${GLM_INCLUDE_DIRS}
、${GLM_LIBRARIES}
和 ${GLM_LIBRARY_DIRS}
cmake 变量,但它不起作用。
我如何 link glm 的库和 inludes 与我的可执行文件?
我正在使用 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}")
我的做法是错误的。
来自 OpenGL GLM 官方页面:
OpenGL Mathematics (GLM) is a header only C++ mathematics library for graphics software based on the OpenGL Shading Language (GLSL) specifications.
因此,我只需要指定构建的 GLM 库的 /include
路径,链接器在链接给定目标时应在其中搜索库。
可以通过cmake target_include_directories()
函数处理。这解决了我的问题:
target_include_directories(myExecutable "${GLM_BINARY_DIR}/include")
${GLM_BINARY_DIR}
由我定义并指向存储 GLM 二进制文件的位置。
Config GLM 脚本定义了 IMPORTED 目标 glm::glm
。
因此,在 CMake 代码中使用 GLM 的正确方法是 link 与该目标。
这明确写在 documentation:
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 脚本,随安装包一起提供,通常定义 IMPORTED 目标。
GLM 没有查找脚本(参见 ),并且 find_package
调用中的 PATHS
选项显式请求配置脚本。
我不能 link glm 库与我的可执行文件。我尝试 link 通过
${GLM_INCLUDE_DIRS}
、${GLM_LIBRARIES}
和 ${GLM_LIBRARY_DIRS}
cmake 变量,但它不起作用。
我如何 link glm 的库和 inludes 与我的可执行文件?
我正在使用 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}")
我的做法是错误的。
来自 OpenGL GLM 官方页面:
OpenGL Mathematics (GLM) is a header only C++ mathematics library for graphics software based on the OpenGL Shading Language (GLSL) specifications.
因此,我只需要指定构建的 GLM 库的 /include
路径,链接器在链接给定目标时应在其中搜索库。
可以通过cmake target_include_directories()
函数处理。这解决了我的问题:
target_include_directories(myExecutable "${GLM_BINARY_DIR}/include")
${GLM_BINARY_DIR}
由我定义并指向存储 GLM 二进制文件的位置。
Config GLM 脚本定义了 IMPORTED 目标 glm::glm
。
因此,在 CMake 代码中使用 GLM 的正确方法是 link 与该目标。
这明确写在 documentation:
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 脚本,随安装包一起提供,通常定义 IMPORTED 目标。
GLM 没有查找脚本(参见 find_package
调用中的 PATHS
选项显式请求配置脚本。