Files
Gobang-Game/CMakeLists.txt
T
Serendipity 96a94aaddf 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>
2026-05-02 15:32:54 +08:00

88 lines
2.2 KiB
CMake
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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
)
# === cJSONJSON处理库)===
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 "运行五子棋游戏"
)