You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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适配配置

  1. 安装插件:C/C++、CMake Tools
  2. 在项目.vscode/settings.json中添加以下配置,替换为你本地的vcpkg根目录:
{
    "cmake.configureArgs": [
        "-DCMAKE_TOOLCHAIN_FILE=你的vcpkg根目录/scripts/buildsystems/vcpkg.cmake"
    ],
    "cmake.defaultBuildType": "Debug",
    "cmake.buildDirectory": "${workspaceFolder}/build"
}
  1. 点击VSCode左下角的编译目标选择按钮,选中test_platform,即可直接使用插件提供的构建、运行、调试功能,无需额外配置任务文件。

内容的提问来源于stack exchange,提问作者exokem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 04:54:04