【问题标题】:CMake not wanting to link with libGL.soCMake 不想与 libGL.so 链接
【发布时间】:2015-03-07 20:18:45
【问题描述】:

我在 KDevelop 中编码,我设置了我的 CMakeLists.txt 以包含并链接 libGL 和 freeglut。

但是,它给了我以下错误: make[2]: *** No rule to make target '/usr/lib/libGL.so', needed by 'opengl'. Stop.

这是我的 CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)

project(opengl)
add_executable(opengl main.cpp)
find_package(OpenGL REQUIRED)
find_package(GLUT REQUIRED)
include_directories( ${OPENGL_INCLUDE_DIRS}  ${GLUT_INCLUDE_DIRS} )

target_link_libraries(opengl ${OPENGL_LIBRARIES} ${GLUT_LIBRARY} )

【问题讨论】:

  • 只是插话,有时我会遇到同样的错误,但我一直无法弄清楚是什么原因造成的。它通常通过删除构建目录并执行新的cmake ${SOURCE_TREE} 来解决。
  • 你是怎么做到的?我是 cmake 的新手。
  • 顺便说一下,libGL.so 是有序的,但有 许多 符号链接
  • 通常的工作方式是在源代码树之外创建一个构建目录,cd 并使用 cmake 从源代码树生成 makefile。例如mkdir /tmp/builddir ; cd /tmp/builddir ; cmake /…/projectdir

标签: opengl cmake kdevelop


【解决方案1】:

首先,我要建议的可能取决于 CMake 版本,但我不认为(我使用的是 cmake 版本 3.1.0)。

查看已安装的 FindOpenGL.cmake 文件,看起来你想要在 target_link_libraries 中的变量是 ${OPENGL_glu_LIBRARY}。大小写很重要。

测试此类问题的最佳方法是使用 message("var: ${var}"),然后您将能够清楚地看到在配置过程中您的变量设置为什么。

希望这会有所帮助!

仅供参考,我在我的 linux 机器上的 ${cmake_install_dir}/Modules/Find* where cmake_install_dir=/usr/share/cmake 中找到了 find 模块。

编辑** 抱歉,今天早上很累,错过了你想要 GLUT,而不是 GLU。有一个 FindGLUT.cmake 模块。您应该调用 find_package(GLUT REQUIRED) 并使用 ${GLUT_LIBRARIES} 和 ${GLUT_INCLUDE_DIR}。很抱歉造成混乱!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多