mirror of
https://github.com/LHY0125/Gobang-Game.git
synced 2026-06-28 16:35:55 +08:00
feat: 集成大模型AI、重构构建系统并修复多项代码质量问题
- 构建系统: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>
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
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 "运行五子棋游戏"
|
||||
)
|
||||
Reference in New Issue
Block a user