正如标题所说,我似乎无法使用OpenGL和Glut构建项目。
我收到OpenGL函数的未定义引用错误。
我尝试过:
project(testas)
find_package(OpenGL)
find_package(GLUT)
add_executable(testas main.cpp)
但这不起作用。
有什么建议吗?
答案 0 :(得分:70)
find_package(OpenGL)
会为您找到该包,但它不会将包链接到目标。
要链接到库,您可以使用target_link_libraries(<target> <item>)
。此外,您还需要设置include directory
,以便链接器知道在哪里查找内容。这是通过include_directories
完成的。
执行此操作的示例CMakeLists.txt
如下所示:
cmake_minimum_required(VERSION 2.8)
project(testas)
add_executable(testas main.cpp)
find_package(OpenGL REQUIRED)
find_package(GLUT REQUIRED)
include_directories( ${OPENGL_INCLUDE_DIRS} ${GLUT_INCLUDE_DIRS} )
target_link_libraries(testas ${OPENGL_LIBRARIES} ${GLUT_LIBRARY} )
如果您的项目需要OpenGL
,则可以考虑在OpenGL_FOUND
之后测试find_package(OpenGL)
或使用REQUIRED
,如果cmake
找不到OpenGL
。
有关更多信息和更好的示例:
特别是,CMake wiki
和cmake and opengl
链接应该足以让您完成任务。
答案 1 :(得分:3)
在最新版本的CMake(3.10+)中,有一种使用所谓的 IMPORTED target 的新方法来使用OpenGL:
cmake_minimum_required(VERSION 3.10)
project(testas)
add_executable(testas main.cpp)
find_package(OpenGL REQUIRED COMPONENTS OpenGL)
find_package(GLUT REQUIRED)
add_dependencies(testas OpenGL::OpenGL)
include_directories(${GLUT_INCLUDE_DIRS} )
target_link_libraries(testas OpenGL::OpenGL ${GLUT_LIBRARY} )
目前唯一的实际区别似乎是在Linux上(如果可用,则使用GLVND),但是大概此解决方案应该更适合未来,因为CMake会提供有关您的意图的更多信息以及其他解析CMakeFiles的工具更好地了解依赖关系树。
答案 2 :(得分:0)
最近您可以使用GLUT::GLUT
:
cmake_minimum_required(VERSION 2.8)
project(testas)
find_package(OpenGL REQUIRED)
find_package(GLUT REQUIRED)
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} OpenGL::GL GLUT::GLUT)
答案 3 :(得分:-4)
我使用这两个cmake文件来构建我的OpenGL项目,它们都运行良好。
首先,主要是CMakeLists.txt
npm run eject
其次,查找CMakeModules目录下的GLUT cmake文件
Remove untracked files, stash or commit any changes, and try again.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! todoevents@0.1.0 eject: `react-scripts eject`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the todoevents@0.1.0 eject script.
npm ERR! This is probably not a problem with npm. There is likely additional
logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\Pigpigever\AppData\Roaming\npm-cache\_logs\2017-08-
14T09_03_14_398Z-debug.log