如何将库置于项目同目录而非系统库并解决SDL头文件引用问题
解决SDL头文件<>引用报错的方案(无需修改引用代码)
方法1:配置VSCodium的C/C++包含路径
直接在VSCodium的C/C++配置中添加SDL头文件所在目录,让编译器自动搜索该路径下的头文件:
- 打开VSCodium,按下
Ctrl+Shift+P,输入C/C++: Edit Configurations (JSON)打开c_cpp_properties.json - 在
includePath数组中添加SDL头文件的根目录路径,比如你把SDL头文件放在项目下的libs/SDL/include,就添加:"${workspaceFolder}/libs/SDL/include/**" - 保存配置后,编译器会自动扫描该目录及其子目录,识别用
<>引用的SDL子头文件。
方法2:通过CMake配置包含路径(推荐,适合CMake构建项目)
如果你的项目用CMake管理,直接在CMakeLists.txt中添加头文件搜索路径:
- 在
CMakeLists.txt里加入:# 假设SDL头文件放在项目根目录的libs/SDL/include下 include_directories(${PROJECT_SOURCE_DIR}/libs/SDL/include) - 重新生成Makefile并编译,CMake会自动把该目录加入编译的
-I参数,编译器就能正确解析<>引用的子头文件。
方法3:保持SDL头文件的原始目录结构
不要把SDL的所有头文件直接平铺到项目目录,而是完整复制SDL的include目录(包含所有子目录和层级)到项目中,比如:
- 项目目录下创建
libs/SDL文件夹 - 把编译得到的
SDL2.dll、SDL2.dll.a放到libs/SDL - 把SDL源码中的
include目录完整复制到libs/SDL下,形成libs/SDL/include/SDL2/xxx.h的结构
然后配合上面两种方法中的任意一种配置包含路径,就能让<SDL2/xxx.h>这类引用正常工作,完全不需要修改原代码的引用方式。
内容的提问来源于stack exchange,提问作者His_Holiness
相关产品推荐
相关产品推荐

