From ee8ec490e4f6847a0afb93b47b8bd7ec9de4c470 Mon Sep 17 00:00:00 2001 From: Alexander Zhirov Date: Fri, 5 May 2023 15:46:47 +0300 Subject: [PATCH] windows build --- README.md | 31 ++++++------------------ game/CMakeLists.txt | 58 ++++++++++++++++++++++++++++++++++++++------- 2 files changed, 57 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index fc47743..63a487b 100644 --- a/README.md +++ b/README.md @@ -17,34 +17,17 @@ ## Сборка +Для сборки необходимо скачать [статическую библиотеку Allegro](https://github.com/liballeg/allegro5/releases) и [статические зависимости](https://github.com/liballeg/allegro_winpkg/releases). + +Также для сборки требуется установленный компилятор `g++` и система сборки `cmake`. + +Рабочая компиляция проекта производилась в [MSYS2](https://www.msys2.org/). + ```sh mkdir build cd build -cmake -B . -S ../game +cmake -G "Unix Makefiles" -B . -S ../game -D PATH_ALLEGRO_STATIC="C:\" -D PATH_DEPS_STATIC="C:\" make ``` Основные данные, необходимые для запуска игры, находятся в каталоге [data](data/). - -### Для Windows - -#### Ключи для сборки - -`-lallegro_dialog-static -lallegro_image-static -lallegro_primitives-static -lallegro-static -ljpeg -lpng16 -lwebp -lwinmm -lopengl32 -lcomdlg32 -lgdi32 -lole32 -lshlwapi -lz -mwindows` - -#### Статическая сборка - -`-static` - -#### Дополнительные библиотеки для сборки - -- `jpeg` -- `png16` -- `webp` -- `winmm` -- `opengl32` -- `comdlg32` -- `gdi32` -- `ole32` -- `shlwapi` -- `z` diff --git a/game/CMakeLists.txt b/game/CMakeLists.txt index accb2b9..4e41f2e 100644 --- a/game/CMakeLists.txt +++ b/game/CMakeLists.txt @@ -1,6 +1,30 @@ -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.25) project(tictactoe) +set(STDCPP_LIB stdc++ -static) + +set(PATH_ALLEGRO_STATIC "" CACHE PATH "Path to allegro static libs") +set(PATH_DEPS_STATIC "" CACHE PATH "Path to dependencies static libs") + +add_library(allegro STATIC IMPORTED) +set_property(TARGET allegro PROPERTY IMPORTED_LOCATION "${PATH_ALLEGRO_STATIC}/liballegro-static.a") +add_library(allegro_primitives STATIC IMPORTED) +set_property(TARGET allegro_primitives PROPERTY IMPORTED_LOCATION "${PATH_ALLEGRO_STATIC}/liballegro_primitives-static.a") +add_library(allegro_dialog STATIC IMPORTED) +set_property(TARGET allegro_dialog PROPERTY IMPORTED_LOCATION "${PATH_ALLEGRO_STATIC}/liballegro_dialog-static.a") +add_library(allegro_image STATIC IMPORTED) +set_property(TARGET allegro_image PROPERTY IMPORTED_LOCATION "${PATH_ALLEGRO_STATIC}/liballegro_image-static.a") +add_library(allegro_font STATIC IMPORTED) + +add_library(jpeg STATIC IMPORTED) +set_property(TARGET jpeg PROPERTY IMPORTED_LOCATION "${PATH_DEPS_STATIC}/libjpeg.a") +add_library(png16 STATIC IMPORTED) +set_property(TARGET png16 PROPERTY IMPORTED_LOCATION "${PATH_DEPS_STATIC}/libpng16.a") +add_library(webp STATIC IMPORTED) +set_property(TARGET webp PROPERTY IMPORTED_LOCATION "${PATH_DEPS_STATIC}/libwebp.a") +add_library(zlib STATIC IMPORTED) +set_property(TARGET zlib PROPERTY IMPORTED_LOCATION "${PATH_DEPS_STATIC}/libzlib.a") + set(SRC_GAME ai.cpp main.cpp @@ -8,15 +32,33 @@ set(SRC_GAME parse_args.cpp version.cpp) -find_library(ALLEGRO_LIB NAMES allegro) -find_library(ALLEGRO_PRIMITIVES_LIB NAMES allegro_primitives) -find_library(ALLEGRO_DIALOG_LIB NAMES allegro_dialog) -find_library(ALLEGRO_IMAGE_LIB allegro_image) +set(ALLEGRO_LIB allegro) +set(ALLEGRO_PRIMITIVES_LIB allegro_primitives) +set(ALLEGRO_DIALOG_LIB allegro_dialog) +set(ALLEGRO_IMAGE_LIB allegro_image) -add_executable(${PROJECT_NAME} ${SRC_GAME}) +find_library(WINMM_LIB winmm) +find_library(OPENGL32_LIB opengl32) +find_library(SHLWAPI_LIB shlwapi) + +set(PNG16_LIB png16) +set(JPEG_LIB jpeg) +set(WEBP_LIB webp) +set(Z_LIB zlib) + +add_executable(${PROJECT_NAME} WIN32 ${SRC_GAME}) target_link_libraries(${PROJECT_NAME} - ${ALLEGRO_LIB} ${ALLEGRO_PRIMITIVES_LIB} ${ALLEGRO_DIALOG_LIB} - ${ALLEGRO_IMAGE_LIB}) + ${ALLEGRO_IMAGE_LIB} + ${ALLEGRO_LIB} + + ${JPEG_LIB} + ${WEBP_LIB} + ${PNG16_LIB} + ${WINMM_LIB} + ${OPENGL32_LIB} + ${SHLWAPI_LIB} + ${STDCPP_LIB} + ${Z_LIB})