我想将glfw和glew链接到我的图形编程项目。
添加glfw非常简单,我按照他们网站上的说明进行操作。用glfw创建一个窗口工作得很好。
但是,我无法看到我的CMakeLists.txt添加GLEW有什么问题。程序给出错误:“GL / glew.h:没有这样的文件或目录”。
我的CMakeLists.txt:
cmake_minimum_required( VERSION 3.5 )
project(Starting)
find_package( OpenGL REQUIRED )
set( GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE )
set( GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE )
set( GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE )
add_subdirectory( ${PROJECT_SOURCE_DIR}/GLEW/build/cmake )
add_subdirectory( ${PROJECT_SOURCE_DIR}/GLFW )
add_executable( Starting ${PROJECT_SOURCE_DIR}/src/main.cxx )
target_link_libraries( Starting glew32s glfw )
我试过给它起名字GLEW,glew,glew32而不是改变。 该库从此处下载:https://github.com/Perlmint/glew-cmake
如果它有任何重要性,这是我运行我的CMakeLists.txt的批处理文件(位于项目源目录中的构建文件夹中):
@echo off
cmake -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug ..
make all
在github上查看OpenGL项目并没有帮助,因为几乎所有人都在使用visual studio。 如果有人能告诉我我的错误会很棒。
答案 0 :(得分:2)
虽然Julia的建议可能会有效,但CMake for GLEW附带了一个查找脚本,假设您使用的是足够新的版本,那么您应该使用它而不是手动包含路径。只需添加以下内容:
find_package(GLEW 2.0 REQUIRED)
target_link_libraries(Starting GLEW::GLEW)
这将在您的系统上找到GLEW,然后链接到必要的库并添加必要的包含目录。
答案 1 :(得分:1)
您的问题是您忘记将GLEW包含目录添加到项目中。您可以使用target_include_directories
或include_directories
,唯一的区别在于您将其放在CMakeLists.txt
和语法中。
我更喜欢target_include_directories
,所以添加后你的CMakeLists.txt会是这样的:
cmake_minimum_required( VERSION 3.5 )
project(Starting)
find_package( OpenGL REQUIRED )
set( GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE )
set( GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE )
set( GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE )
add_subdirectory( ${PROJECT_SOURCE_DIR}/GLEW/build/cmake )
add_subdirectory( ${PROJECT_SOURCE_DIR}/GLFW )
add_executable( Starting ${PROJECT_SOURCE_DIR}/src/main.cxx )
target_include_directories(Starting PRIVATE
${PROJECT_SOURCE_DIR}/GLEW/include
)
target_link_libraries( Starting glew32s glfw )