mirror of
https://github.com/LHY0125/Gobang-Game.git
synced 2026-06-29 00:45:55 +08:00
96a94aaddf
- 构建系统:Makefile 迁移至 CMakeLists.txt,支持 cJSON 和 WinHTTP - 项目结构:src/ 按功能拆分为 core/、gui/、network/、record/、llm/ 子目录 - 新功能:集成大模型 AI(WinHTTP + cJSON,兼容 OpenAI 协议),支持异步请求 - 渲染修复:IupDraw* 替换为 Windows GDI,修复画布黑屏问题 - 网络修复:ENet 初始化幂等化,实现真实 get_local_ip() (Winsock) - 代码质量:删除死代码 (dfs/count_threats_in_direction),修复头文件守卫, sprintf→snprintf 防溢出,strncpy 安全终止,GDI 资源泄漏修复 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
88 lines
2.2 KiB
CMake
88 lines
2.2 KiB
CMake
cmake_minimum_required(VERSION 3.16)
|
||
project(Gobang VERSION 9.0 LANGUAGES C)
|
||
|
||
set(CMAKE_C_STANDARD 17)
|
||
set(CMAKE_C_STANDARD_REQUIRED ON)
|
||
|
||
# === 输出目录:与原 Makefile 保持一致 ===
|
||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
|
||
|
||
# === 编译选项 ===
|
||
add_compile_options(-Wall -Wextra -O2)
|
||
add_compile_options(-finput-charset=UTF-8 -fexec-charset=UTF-8)
|
||
|
||
# === ENet(从源码编译静态库)===
|
||
set(ENET_DIR ${CMAKE_SOURCE_DIR}/libs/enet)
|
||
add_library(enet STATIC
|
||
${ENET_DIR}/callbacks.c
|
||
${ENET_DIR}/compress.c
|
||
${ENET_DIR}/host.c
|
||
${ENET_DIR}/list.c
|
||
${ENET_DIR}/packet.c
|
||
${ENET_DIR}/peer.c
|
||
${ENET_DIR}/protocol.c
|
||
${ENET_DIR}/win32.c
|
||
)
|
||
target_include_directories(enet PUBLIC ${ENET_DIR}/include)
|
||
|
||
# === IUP(预构建导入库)===
|
||
set(IUP_DIR ${CMAKE_SOURCE_DIR}/libs/iup-3.31_Win64_dllw6_lib)
|
||
add_library(iup SHARED IMPORTED)
|
||
set_target_properties(iup PROPERTIES
|
||
IMPORTED_IMPLIB ${IUP_DIR}/libiup.a
|
||
IMPORTED_LOCATION ${IUP_DIR}/iup.dll
|
||
INTERFACE_INCLUDE_DIRECTORIES ${IUP_DIR}/include
|
||
)
|
||
|
||
# === cJSON(JSON处理库)===
|
||
add_library(cjson STATIC ${CMAKE_SOURCE_DIR}/libs/cJSON/cJSON.c)
|
||
target_include_directories(cjson PUBLIC ${CMAKE_SOURCE_DIR}/libs/cJSON)
|
||
|
||
# === 主可执行文件 ===
|
||
add_executable(gobang_gui
|
||
src/core/main.c
|
||
src/core/globals.c
|
||
src/core/config.c
|
||
src/core/gobang.c
|
||
src/core/ai.c
|
||
src/network/network.c
|
||
src/record/record.c
|
||
src/gui/gui_core.c
|
||
src/gui/gui_game.c
|
||
src/gui/gui_menu.c
|
||
src/gui/gui_replay.c
|
||
src/llm/llm_ai.c
|
||
)
|
||
|
||
target_include_directories(gobang_gui PRIVATE ${CMAKE_SOURCE_DIR}/include)
|
||
|
||
target_link_libraries(gobang_gui PRIVATE
|
||
enet
|
||
cjson
|
||
iup
|
||
winhttp
|
||
ws2_32
|
||
winmm
|
||
gdi32
|
||
comdlg32
|
||
comctl32
|
||
uuid
|
||
ole32
|
||
)
|
||
|
||
# === 构建后拷贝 iup.dll 到 bin/ ===
|
||
add_custom_command(TARGET gobang_gui POST_BUILD
|
||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||
${IUP_DIR}/iup.dll
|
||
$<TARGET_FILE_DIR:gobang_gui>
|
||
COMMENT "拷贝 iup.dll 到输出目录"
|
||
)
|
||
|
||
# === 快捷运行目标 ===
|
||
add_custom_target(run
|
||
COMMAND gobang_gui
|
||
DEPENDS gobang_gui
|
||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/bin
|
||
COMMENT "运行五子棋游戏"
|
||
)
|