mirror of
https://github.com/zhenyan121/SporeBG-Conid.git
synced 2026-04-10 06:14:08 +08:00
using FetchContent to control lib
This commit is contained in:
@@ -1,16 +1,22 @@
|
|||||||
cmake_minimum_required(VERSION 3.16)
|
cmake_minimum_required(VERSION 3.20)
|
||||||
project(SporeBG-Conid)
|
project(SporeBG-Conid LANGUAGES C CXX)
|
||||||
|
|
||||||
# 设置C++标准
|
# C++ 标准
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
# 设置输出目录
|
# 输出目录
|
||||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/$<CONFIGURATION>")
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/$<CONFIGURATION>")
|
||||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/$<CONFIGURATION>")
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/$<CONFIGURATION>")
|
||||||
|
|
||||||
# 包含SDL3子项目
|
# ========== 引入 SDL 构建脚本 ==========
|
||||||
add_subdirectory(third_party/SDL3)
|
include(${CMAKE_SOURCE_DIR}/cmake/SDL.cmake)
|
||||||
|
|
||||||
|
# ========== 源码 ==========
|
||||||
|
#file(GLOB_RECURSE SOURCE_FILES
|
||||||
|
# src/*.cpp
|
||||||
|
# src/*.h
|
||||||
|
#)
|
||||||
|
|
||||||
set(SOURCE_FILES
|
set(SOURCE_FILES
|
||||||
src/main.cpp
|
src/main.cpp
|
||||||
@@ -26,24 +32,31 @@ set(SOURCE_FILES
|
|||||||
src/scenes/gameplay/GameScene.cpp
|
src/scenes/gameplay/GameScene.cpp
|
||||||
src/graphics/GameRenderer.cpp
|
src/graphics/GameRenderer.cpp
|
||||||
src/graphics/CoordinateConverter.cpp
|
src/graphics/CoordinateConverter.cpp
|
||||||
|
src/utils/CoordinateTools.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
# 添加可执行文件
|
|
||||||
add_executable(${PROJECT_NAME} ${SOURCE_FILES})
|
add_executable(${PROJECT_NAME} ${SOURCE_FILES})
|
||||||
|
|
||||||
target_include_directories(SporeBG-Conid PRIVATE
|
target_include_directories(${PROJECT_NAME}
|
||||||
${CMAKE_SOURCE_DIR}/src)
|
PRIVATE ${CMAKE_SOURCE_DIR}/src
|
||||||
# 使用正确的目标名称链接SDL3
|
)
|
||||||
# 方法1:使用别名(推荐)
|
|
||||||
target_link_libraries(SporeBG-Conid PRIVATE SDL3::SDL3)
|
|
||||||
|
|
||||||
# Windows下复制动态库 - 使用正确的目标名称
|
target_link_libraries(${PROJECT_NAME}
|
||||||
|
PRIVATE
|
||||||
|
SDL3::SDL3
|
||||||
|
SDL3_ttf::SDL3_ttf
|
||||||
|
)
|
||||||
|
|
||||||
|
# ========== Windows: 复制 DLL ==========
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
add_custom_command(TARGET SporeBG-Conid POST_BUILD
|
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||||
$<TARGET_FILE:SDL3::SDL3>
|
$<TARGET_FILE:SDL3::SDL3>
|
||||||
$<TARGET_FILE_DIR:SporeBG-Conid>
|
$<TARGET_FILE_DIR:${PROJECT_NAME}>
|
||||||
COMMENT "Copying SDL3 DLL to output directory"
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||||
|
$<TARGET_FILE:SDL3_ttf::SDL3_ttf>
|
||||||
|
$<TARGET_FILE_DIR:${PROJECT_NAME}>
|
||||||
|
COMMENT "Copying SDL3 runtime DLLs"
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
## 构建指南
|
## 构建指南
|
||||||
确保电脑安装了`cmake`和`ninja`,使用`gcc`与`g++`:
|
确保电脑安装了`cmake`和`ninja`,使用`gcc`与`g++`:
|
||||||
```bash
|
```bash
|
||||||
git clone --recursive https://github.com/zhenyan121/SporeBG-Conid.git
|
git clone https://github.com/zhenyan121/SporeBG-Conid.git
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ ..
|
cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ ..
|
||||||
|
|||||||
27
cmake/SDL.cmake
Normal file
27
cmake/SDL.cmake
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
include(FetchContent)
|
||||||
|
|
||||||
|
# ===========================
|
||||||
|
# SDL3
|
||||||
|
# ===========================
|
||||||
|
FetchContent_Declare(
|
||||||
|
SDL3
|
||||||
|
GIT_REPOSITORY https://github.com/libsdl-org/SDL.git
|
||||||
|
GIT_TAG release-3.2.4
|
||||||
|
)
|
||||||
|
|
||||||
|
FetchContent_MakeAvailable(SDL3)
|
||||||
|
|
||||||
|
# ===========================
|
||||||
|
# SDL3_ttf(使用内置 FreeType + Harfbuzz)
|
||||||
|
# ===========================
|
||||||
|
set(SDLTTF_VENDORED ON CACHE BOOL "" FORCE)
|
||||||
|
set(SDLTTF_HARFBUZZ OFF CACHE BOOL "" FORCE)
|
||||||
|
set(SDLTTF_PLUTOSVG OFF CACHE BOOL "" FORCE)
|
||||||
|
|
||||||
|
FetchContent_Declare(
|
||||||
|
SDL3_ttf
|
||||||
|
GIT_REPOSITORY https://github.com/libsdl-org/SDL_ttf.git
|
||||||
|
GIT_TAG release-3.2.2 # ← 正确的版本
|
||||||
|
)
|
||||||
|
|
||||||
|
FetchContent_MakeAvailable(SDL3_ttf)
|
||||||
1
third_party/SDL3
vendored
1
third_party/SDL3
vendored
Submodule third_party/SDL3 deleted from 61bf7087f5
1
third_party/freetype
vendored
1
third_party/freetype
vendored
Submodule third_party/freetype deleted from 526ec5c47b
Reference in New Issue
Block a user