CMake链接OpenGL和GLUT库 我写了C++项目,其中我使用OpenGL和GLUT库。
当我从命令行编译它时,一切正常。 这是样品CMake链接OpenGL和GLUT库 我写了C++项目,其中我使用OpenGL和GLUT库。,opengl,cmake,glut,Opengl,Cmake,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
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”的引用。等等
有人能帮我吗
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} )
注意:您不应该为可执行文件使用项目名称
find\u package(OpenGL)
我认为add\u可执行文件
需要位于集合
之后。编辑:但我可能会将其与set\u target\u properties
混淆,仍然不起作用:“错误:[cmake\u check\u build\u system]错误1”。据我所知,参数“-L/usr/lib/nvidia-331/”是程序正常运行所必需的。默认的OpenGL库有问题。@Bender:请跟我说:“我永远不会链接到libGL.so,使用绝对或非默认路径!”如果你不能正确链接到libGL.so,你应该在你的系统上修复它。我不太确定您使用的aux\u source\u目录
是否有效或合理。但是我直接从我自己的一个OpenGL项目中获取的CMake的其余部分,因此在正确配置的系统上它应该可以工作。对于未来的用户,应该将-L路径添加到变量LD_LIBRARY_PATH中,如/usr/lib/nvidia-331/中所示。示例:export LD_LIBRARY_PATH=/home/sk/anaconda3/lib/:$LD_LIBRARY_PATH将路径/home/sk/anaconda3/lib/前置到LD_LIBRARY_PATH@saurabheights:不!别这样!这会干扰安装程序设置的GLvnd或符号链接。永远不要为系统级库指定额外的库搜索路径。Ohterwise钩住,或者像VirtualGL这样的东西所需要的注射,会有问题。不要那样做!我不会那么做的。对于任何库,如果它是使用CMake构建的,我们应该使用CMake加载它,它将提供适当的include和lib目录变量。我对LD_LIBRARY_PATH的建议通常是如何与自定义库链接。我目前正在使用Python代码,它使用没有CGub的自定义构建的C++库。我抄了你的答案,因为这是正确的方法。