c++ - GLEW 在声明文件中不可用,但在头文件 CMAKE 中有效
问题描述
如标题所述,我已将 CMake 配置为将 GLEW 与我的项目链接,并且#include <GL/glew.h>
在 .hpp 文件中没有问题。.cpp
尝试在与头文件关联的声明 () 文件中使用 GLEW 函数时会出现问题,这给了我一个错误identifier "xxx" is undefined
,xxx
因为我尝试使用的函数种类繁多。
此外,我还以类似的方式链接了 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 今天发布了更新,以及相关的构建工具,有了这个更新,我不再遇到这个问题!
解决方案
推荐阅读
- perl - 如何安装 Parallel::ForkManager 模块?
- docker - Docker 集群策略
- mqtt - 如何初始化 LwIP 以使用 MQTT 库
- android - 为什么通知组在android中不起作用?我做错了什么?
- java - db连接池上的try-with资源是否每次都会关闭连接?
- ios - 如何在 ARKit 中进行动画时获取 3D 对象的当前位置?
- batch-file - 为什么在 doskey 别名脚本中设置 %cd% 返回脚本路径而不是当前目录
- python - 在python pandas的一列中转换多暗列表
- ckeditor - 更改 ckeditor 的皮肤
- mysql - 对 mysqlServer ErrorLogs 的可能攻击