|
@@ -1,11 +1,14 @@
|
|
|
cmake_minimum_required(VERSION 3.27)
|
|
|
-project(Snake)
|
|
|
+project(Snake VERSION 1.0.0.0)
|
|
|
|
|
|
set(CMAKE_CXX_STANDARD 23)
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
|
|
|
|
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
|
|
+include(ProjectHelpers)
|
|
|
+
|
|
|
include(FetchContent)
|
|
|
FetchContent_Declare(
|
|
|
SDL2
|
|
@@ -30,6 +33,11 @@ FetchContent_MakeAvailable(SDL2 SDL2_image SDL2_ttf)
|
|
|
set(Boost_USE_MULTITHREADED ON)
|
|
|
set(Boost_USE_STATIC_LIBS ON)
|
|
|
set(Boost_USE_STATIC_RUNTIME OFF)
|
|
|
+if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
|
+ set(Boost_USE_DEBUG_LIBS ON)
|
|
|
+else ()
|
|
|
+ set(Boost_USE_DEBUG_LIBS OFF)
|
|
|
+endif ()
|
|
|
find_package(Boost 1.74.0 REQUIRED COMPONENTS serialization program_options)
|
|
|
|
|
|
configure_file(
|
|
@@ -62,8 +70,10 @@ add_executable(Snake WIN32 MACOSX_BUNDLE
|
|
|
|
|
|
file(GLOB assets assets/*)
|
|
|
target_sources(Snake PRIVATE ${assets})
|
|
|
-set_source_files_properties(${assets} PROPERTIES MACOSX_PACKAGE_LOCATION Resources/assets)
|
|
|
|
|
|
+set_target_properties(Snake PROPERTIES
|
|
|
+ RUNTIME_OUTPUT_NAME snake
|
|
|
+)
|
|
|
target_link_libraries(Snake PRIVATE
|
|
|
SDL2::SDL2 SDL2::SDL2main
|
|
|
SDL2_image::SDL2_image
|
|
@@ -71,5 +81,29 @@ target_link_libraries(Snake PRIVATE
|
|
|
Boost::headers Boost::serialization Boost::program_options
|
|
|
)
|
|
|
|
|
|
-install(TARGETS Snake DESTINATION bin)
|
|
|
-install(FILES ${assets} DESTINATION share/snake/assets)
|
|
|
+if (WIN32)
|
|
|
+ copy_dependency_dll(TARGET Snake DEPENDENCY SDL2::SDL2)
|
|
|
+ copy_dependency_dll(TARGET Snake DEPENDENCY SDL2_image::SDL2_image)
|
|
|
+ copy_dependency_dll(TARGET Snake DEPENDENCY SDL2_ttf::SDL2_ttf)
|
|
|
+
|
|
|
+ include(InstallRequiredSystemLibraries)
|
|
|
+ install(IMPORTED_RUNTIME_ARTIFACTS SDL2::SDL2 SDL2_image::SDL2_image SDL2_ttf::SDL2_ttf)
|
|
|
+
|
|
|
+ install(TARGETS Snake DESTINATION bin)
|
|
|
+ install(FILES ${assets} DESTINATION assets)
|
|
|
+
|
|
|
+ set(CPACK_GENERATOR NSIS64)
|
|
|
+ set(CPACK_PACKAGE_INSTALL_DIRECTORY "Draconic Bytes\\\\Snake")
|
|
|
+ set(CPACK_PACKAGE_NAME "Snake")
|
|
|
+ set(CPACK_PACKAGE_VENDOR "Draconic Bytes")
|
|
|
+ set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE")
|
|
|
+ set(CPACK_PACKAGE_EXECUTABLES "snake;Snake")
|
|
|
+ include(CPack)
|
|
|
+elseif (APPLE)
|
|
|
+ set_source_files_properties(${assets} PROPERTIES
|
|
|
+ MACOSX_PACKAGE_LOCATION Resources/assets
|
|
|
+ )
|
|
|
+else ()
|
|
|
+ install(TARGETS Snake DESTINATION bin)
|
|
|
+ install(FILES ${assets} DESTINATION share/snake/assets)
|
|
|
+endif ()
|