2014-11-06 200 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