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

在GitHub Codespaces中通过CMake编译集成SQLite3的C++项目遇阻求助

解决CMake集成SQLite3的编译问题

当前CMake配置的核心问题

你的配置存在几个关键错误,导致了找不到包和未定义引用的问题:

  • 混用了unofficial-sqlite3(这是vcpkg专属包,未配置vcpkg时必然找不到)
  • 错误引用Windows平台的sqlite3.dll,Linux环境下应链接sqlite3库
  • target_link_libraries中错误使用main作为目标(你的可执行文件是game)
  • 重复配置include目录和链接库,导致配置冲突

下面给出两种可行方案,选择其一即可:


方案1:使用系统预装的SQLite3(推荐)

GitHub Codespaces已预装SQLite,且你已安装libsqlite3-dev,直接使用系统库最省心:

完整CMakeLists.txt配置

cmake_minimum_required(VERSION 3.10)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/build)

# 项目名称和版本
project(game VERSION 0.1)

# 收集源码文件
file(GLOB_RECURSE SRC_FILES src/*.cpp)
add_executable(game main.cpp ${SRC_FILES})

# 包含自身项目的头文件目录
target_include_directories(game PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)

# 集成系统SQLite3
find_package(SQLite3 REQUIRED)
target_include_directories(game PUBLIC ${SQLite3_INCLUDE_DIRS})
target_link_libraries(game PUBLIC ${SQLite3_LIBRARIES})

# 保留Catch2集成的相关配置(如果之前有效,直接加在这里即可)

验证步骤

  1. 删除旧编译缓存:rm -rf build
  2. 创建并进入新编译目录:mkdir build && cd build
  3. 执行CMake配置:cmake ..
  4. 编译项目:make

方案2:使用项目内的本地SQLite文件

如果你想依赖自己项目debug/sqlite下的文件,按以下配置:

完整CMakeLists.txt配置

cmake_minimum_required(VERSION 3.10)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/build)

# 项目名称和版本
project(game VERSION 0.1)

# 收集源码文件
file(GLOB_RECURSE SRC_FILES src/*.cpp)
add_executable(game main.cpp ${SRC_FILES})

# 包含自身项目的头文件目录
target_include_directories(game PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)

# 集成本地SQLite3
target_include_directories(game PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/debug/sqlite/include)
# 将本地sqlite3.c加入编译流程
target_sources(game PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/debug/sqlite/include/sqlite3.c)
# Linux下编译SQLite需要额外链接系统库
target_link_libraries(game PUBLIC pthread dl)

额外注意事项

  • 代码中引用SQLite头文件时,必须写#include <sqlite3.h>,而非sqlite.h,否则会出现头文件找不到的问题
  • 每次修改CMake配置后,务必清理旧的build目录,避免缓存的错误配置干扰编译
  • 使用方案1时,可通过dpkg -l | grep libsqlite3-dev命令验证libsqlite3-dev是否安装成功

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:10:25