2013-05-10 111 views
0

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

/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中设置?

回答

0

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

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

无论哪种情况,在将更改插入CMakeList文件后,应该在KDevelop4 Project菜单中运行configure命令。 CMake将执行CMakeLIst更改并报告是否找到GLUT文件。