首页 > 解决方案 > GLEW 在声明文件中不可用,但在头文件 CMAKE 中有效

问题描述

如标题所述,我已将 CMake 配置为将 GLEW 与我的项目链接,并且#include <GL/glew.h>在 .hpp 文件中没有问题。.cpp尝试在与头文件关联的声明 () 文件中使用 GLEW 函数时会出现问题,这给了我一个错误identifier "xxx" is undefinedxxx因为我尝试使用的函数种类繁多。

此外,我还以类似的方式链接了 SDL2,并且在同一个声明文件中使用它的函数时没有遇到任何问题。我相信问题一定出在我的 CMakeLists.txt 配置中:

CMakeLists.txt

cmake_minimum_required (VERSION 3.8)

set(PROJECT GUI_Engine)

add_executable (${PROJECT} "./src/driver/main.cpp")

set(HEADER_FILES ./src/include)
set(DEC_FILES ./src/lib)
set(PKGPATH C:/dev/vcpkg/packages)

add_library(engine ${DEC_FILES}/engine.cpp ${HEADER_FILES}/engine.hpp)

list(APPEND CMAKE_PREFIX_PATH ${PKGPATH}/sdl2_x64-windows)
find_package(SDL2 CONFIG REQUIRED)
target_link_libraries(${PROJECT} PRIVATE engine SDL2::SDL2main)
target_link_libraries(engine PUBLIC SDL2::SDL2)

list(APPEND CMAKE_PREFIX_PATH ${PKGPATH}/glew_x64-windows)
find_package(GLEW REQUIRED)
target_link_libraries(engine PUBLIC GLEW::GLEW)

.hpp作为参考,引擎是与.cpp我一直引用的文件相关联的标签。

为了进一步测试,我尝试#include <GL/glew.h>在我的.cpp文件中,并收到错误cannot open source file "GL/glew.h"。此外,在我的.hpp文件中使用任何 GLEW 函数时,不会出现错误。

更新 我的 IDE 今天发布了更新,以及相关的构建工具,有了这个更新,我不再遇到这个问题!

标签: c++cmakeglew

解决方案


推荐阅读