Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CMake链接OpenGL和GLUT库 我写了C++项目,其中我使用OpenGL和GLUT库。_Opengl_Cmake_Glut - Fatal编程技术网

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++库。我抄了你的答案,因为这是正确的方法。