CMake配置含SDL2依赖的静态库与测试可执行文件报错求助
CMake配置方案
完整顶层CMakeLists.txt示例
cmake_minimum_required(VERSION 3.20) project(reset LANGUAGES C) # 设置C标准 set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_C_EXTENSIONS OFF) # 查找vcpkg安装的依赖 find_package(SDL2 REQUIRED) find_package(SDL2_image REQUIRED) # 收集静态库源文件(也可以手动列出所有.c文件替代GLOB) file(GLOB_RECURSE RESET_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.c ) add_library(reset STATIC ${RESET_SOURCES}) # 配置头文件路径,核心解决头文件找不到的问题 target_include_directories(reset PUBLIC # 对外暴露的头文件根目录,外部使用时需通过 <reset/xxx.h> 引用 ${CMAKE_CURRENT_SOURCE_DIR}/include PRIVATE # 库内部私有头文件路径,库内源码可以直接引用 xxx.h 无需前缀 ${CMAKE_CURRENT_SOURCE_DIR}/include/reset ) # 配置依赖,PUBLIC属性会将SDL2的头目录、链接库传播给所有依赖reset的目标 target_link_libraries(reset PUBLIC SDL2::SDL2 SDL2_image::SDL2_image ) # 配置C编译器错误检查参数 target_compile_options(reset PRIVATE $<$<OR:$<C_COMPILER_ID:Clang>,$<C_COMPILER_ID:GNU>>: -Wall -Wextra -Wpedantic -Wshadow -Wconversion -Werror=implicit-function-declaration > $<$<C_COMPILER_ID:MSVC>: /W4 /WX /permissive- > ) # 配置测试可执行文件 add_executable(test_platform ${CMAKE_CURRENT_SOURCE_DIR}/test_platform/test_platform.c) target_link_libraries(test_platform PRIVATE reset)
头文件引用规范
- 库内
src目录下的源文件直接引用头文件即可:#include "depn.h" test_platform.c等外部调用代码,通过前缀引用库头文件:#include <reset/depn.h>
VSCode适配配置
- 安装插件:
C/C++、CMake Tools - 在项目
.vscode/settings.json中添加以下配置,替换为你本地的vcpkg根目录:
{ "cmake.configureArgs": [ "-DCMAKE_TOOLCHAIN_FILE=你的vcpkg根目录/scripts/buildsystems/vcpkg.cmake" ], "cmake.defaultBuildType": "Debug", "cmake.buildDirectory": "${workspaceFolder}/build" }
- 点击VSCode左下角的编译目标选择按钮,选中
test_platform,即可直接使用插件提供的构建、运行、调试功能,无需额外配置任务文件。
内容的提问来源于stack exchange,提问作者exokem
相关产品推荐
相关产品推荐

