2014-11-06 69 views
3

我写了C++项目,在其中使用OpenGL和Glut库。CMake连接OpenGL和GLUT库

当我从命令行编译它时,一切正常。 这里是示例。

g++ -o prog source.cpp -lGL -lGLU -lglut --std=c++11 -L /usr/lib/nvidia-331/ 

但是,当我想在QtCreator使用CMake的:

project(proj) 
cmake_minimum_required(VERSION 2.8) 

aux_source_directory(. SRC_LIST) 
add_executable(${PROJECT_NAME} ${SRC_LIST}) 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -lGL -lGLU -lglut -L /usr/lib/nvidia-331/") 

我收到消息:错误:未定义的引用`glColor3f”等。

任何人都可以帮助我吗?

+0

'find_package(OpenGL的)使用项目名称' – 2014-11-06 09:50:10

+0

我想'add_executable'需要是'set'后位置。编辑:但我可能混淆了'set_target_properties' – PeterT 2014-11-06 09:58:07

回答

3
project(proj) 
cmake_minimum_required(VERSION 2.8) 

find_package(OpenGL) 
find_package(GLUT) 

aux_source_directory(. SRC_LIST) 
add_executable(${PROJECT_NAME} ${SRC_LIST}) 
target_link_libraries(
    ${PROJECT_NAME} 
    ${OPENGL_gl_LIBRARY} 
    ${GLUT_LIBRARIES}) 

注意:你不应该为可执行

+0

仍然无法正常工作:'error:[cmake_check_build_system] Error 1'。 因为我知道参数“-L/usr/lib/nvidia-331 /”是程序工作正常的必要条件。默认的OpenGL库有问题。 – Bender 2014-11-07 20:16:13

+0

@Bender:请跟我说说:**“我永远不会链接到带有绝对路径或非默认路径的libGL.so!”**如果您的系统无法正确链接到libGL.so,您应该修复*那*。我不太确定你使用'aux_source_directory'是否有效或合理。但是剩下的那个CMake我直接从我自己的一个OpenGL项目中取得了,所以在一个正确配置的系统上它应该可以工作。 – datenwolf 2014-11-07 20:23:36