diff --git a/.gitignore b/.gitignore index cbef543..42f2da8 100644 --- a/.gitignore +++ b/.gitignore @@ -432,3 +432,14 @@ FodyWeavers.xsd # JetBrains Rider *.sln.iml +# ---> CMake +build/ +cmake-build-*/ +CMakeCache.txt +CMakeFiles/ +CMakeScripts/ +*.cmake +!CMakeLists.txt +Makefile +*.make + diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..6c1470a --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,69 @@ +cmake_minimum_required(VERSION 3.10) +project(tank_battles_on_the_scrap_paper + VERSION 1.0 + LANGUAGES CXX +) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +# ── 源文件 ── +set(SOURCES + tank_battles_on_the_scrap_paper/main.cpp + tank_battles_on_the_scrap_paper/map.cpp +) + +set(HEADERS + tank_battles_on_the_scrap_paper/bullet.h + tank_battles_on_the_scrap_paper/tank.h + tank_battles_on_the_scrap_paper/map.h + tank_battles_on_the_scrap_paper/data_config.h + tank_battles_on_the_scrap_paper/resource.h +) + +# ── 可执行文件 ── +add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS} + tank_battles_on_the_scrap_paper/resource.rc +) + +# ── Windows 特定配置 ── +if(WIN32) + # EasyX 图形库 + target_include_directories(${PROJECT_NAME} PRIVATE + ${EASYX_INCLUDE_DIR} + ) + + # Windows 多媒体库 + target_link_libraries(${PROJECT_NAME} PRIVATE + winmm.lib + gdi32.lib + ) + + # 控制台子系统 + set_target_properties(${PROJECT_NAME} PROPERTIES + WIN32_EXECUTABLE FALSE + ) + + target_compile_definitions(${PROJECT_NAME} PRIVATE + _CONSOLE + _UNICODE + UNICODE + ) +else() + # 非 Windows 平台给出提示 + message(WARNING + "${PROJECT_NAME} 依赖 EasyX (Windows-only 图形库)," + "当前平台不支持编译。仅生成项目结构参考。" + ) +endif() + +# ── 复制资源文件到构建目录 ── +file(COPY + tank_battles_on_the_scrap_paper/images/ + DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/images/ +) + +file(COPY + tank_battles_on_the_scrap_paper/music/ + DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/music/ +)