0

我正在尝试使用 Gcc 设置 KDevelop,但我无法让它正确链接到外部库。我收到以下错误:

/home/tahsin/Projects/glWrap/build> make
Linking CXX executable glwrap
CMakeFiles/glwrap.dir/main.cpp.o: In function `main':
/home/_/Projects/glWrap/main.cpp:11: undefined reference to `glutInit'
collect2: error: ld returned 1 exit status
make[2]: *** [glwrap] Error 1
make[1]: *** [CMakeFiles/glwrap.dir/all] Error 2
make: *** [all] Error 2
*** Failed ***

我的代码是一个简单的 opengl 文件:

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include <cassert>

using namespace std;

int main(int argC, char **argV) 
{
    glutInit(&argC, argV);
}

我当然可以从我的命令行 Makefile 编译该文件,但不能从 kDevelop 编译。我试过设置 CMakeList(虽然我是新手,但我通常只使用 Makefiles)。与 kDev 项目关联的 CMakeList 如下所示:

cmake_minimum_required(VERSION 2.8)
project(glwrap)
set(CMAKE_CXX_FLAGS "-lglut -lGLU -lGL -I/path/to/the/include/dir")
include_directories( /usr/include )
include_directories( /usr/lib )
include_directories( /usr/include )
link_directories( /usr/lib64 )
link_directories( /usr/lib32 )

add_executable(glwrap main.cpp)
install(TARGETS glwrap RUNTIME DESTINATION bin)

是否需要从 GUI 设置任何特定内容?

4

1 回答 1

0

我不是 CMake 专家,但我相信您的问题是 CMake 需要一些帮助来查找 GLUT 包含的内容。两种可能有效的解决方案是:

  1. 自己找到它们并在 CMakeList 文件中为您的程序插入额外的显式include_directories( )命令。
  2. (这使用了 CMake 系统的强大功能。)使用 CMake FindGLUT 命令。(查看 CMake 文档以了解 FindXXX 的用法。)CMake 将为您查找 GLUT 文件。

无论哪种情况,在将更改插入 CMakeList 文件后,您都应该在 KDevelop4 项目菜单中运行配置命令。如果找到 GLUT 文件,CMake 将执行 CMakeLIst 更改并报告。

于 2013-05-11T15:37:12.620 回答