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

将SDL3作为项目一部分构建时如何配置链接?

SDL3作为项目子模块的链接配置修正方案

你的配置存在两个核心问题:子目录处理顺序错误,以及手动指定SDL路径的冗余操作,以下是修正步骤:

1. 修正根目录CMakeLists.txt的子目录顺序

CMake按add_subdirectory的顺序处理模块,必须先构建SDL库,再构建依赖它的主程序。修改根目录App_Name/CMakeLists.txt:

cmake_minimum_required(VERSION 3.0.0)
project(cmakefun VERSION 0.1.0 DESCRIPTION "Testing SDL" LANGUAGES CXX)

# 先处理SDL库,再处理主程序
add_subdirectory(libs)
add_subdirectory(src)

2. 简化src目录的CMakeLists.txt

SDL的官方CMake配置已经导出了SDL3目标,包含了所有必要的头文件路径和链接信息,无需手动设置路径。修改App_Name/src/CMakeLists.txt:

file(GLOB_RECURSE SOURCES *.cpp)

add_executable(app ${SOURCES})

# 直接链接SDL3目标,CMake会自动处理头文件和库文件
target_link_libraries(app PRIVATE SDL3)

3. 测试SDL功能

启用main.cpp中的SDL代码,验证链接是否正常:

#include<iostream>
#include"SDL3/SDL.h"

int main(int argc, char const *argv[])
{
    std::cout << "hello world working" << std::endl;

    if(SDL_Init(SDL_INIT_EVERYTHING) != 0){
        std::cout << "Error initializing SDL\n" << SDL_GetError() << std::endl;
        return 1;
    }

    SDL_Window* win = SDL_CreateWindow("Ford Galaxie Dash", 1240, 400, SDL_WINDOW_RESIZABLE);
  
    // 清理资源
    if(win != nullptr){
        SDL_DestroyWindow(win);
    }
    SDL_Quit();

    return 0;
}

构建验证

按正常流程执行CMake构建:

  1. 创建build目录并进入:mkdir build && cd build
  2. 生成构建文件:cmake ..
  3. 编译项目:cmake --build .

这样就能正确链接SDL3库并运行程序了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:42:41