From 58a036ffb0a61fd2fd208d0d7cef5db41cc07654 Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Tue, 20 Jun 2023 22:34:24 +1000 Subject: [PATCH] get Ninja + CCache working on Windows --- .gitignore | 3 +++ source/CMakeLists.txt | 25 ++++++++++++++++----- source/CMakeSettings.json | 46 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 5 deletions(-) create mode 100644 source/CMakeSettings.json diff --git a/.gitignore b/.gitignore index 48a2018..65b745d 100644 --- a/.gitignore +++ b/.gitignore @@ -5,8 +5,11 @@ lib/ tiled/ assets/user/ assets/devel/ +assets/packed.pak mods/*.pak mods/* +*/.vs/ +*.vs/ *.sln *.suo *.vcxproj* diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index cf507c6..d8f01a4 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -1,13 +1,24 @@ -PROJECT (starbound) +CMAKE_MINIMUM_REQUIRED (VERSION 3.4) -CMAKE_MINIMUM_REQUIRED (VERSION 3.0) +# Find CCache +FIND_PROGRAM(CCACHE_PATH ccache) +IF (CCACHE_PATH) + SET (CMAKE_C_COMPILER_LAUNCHER "${CCACHE_PATH}") + SET (CMAKE_CXX_COMPILER_LAUNCHER "${CCACHE_PATH}") + MESSAGE (STATUS "Using CCache") +ELSE () + MESSAGE (STATUS "Not using CCache") +ENDIF () + + +PROJECT (starbound) SET (CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/../cmake) SET (CMAKE_CONFIGURATION_TYPES Debug RelWithAsserts RelWithDebInfo Release) SET (CMAKE_EXE_LINKER_FLAGS_RELWITHASSERTS "" CACHE STRING "" FORCE) # Update the docstring on CMAKE_BUILD_TYPE to show what options we actually # allow -SET (CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING "Choose the type of build, options are: Debug RelWithAsserts RelWithDebInfo Release" FORCE) +# SET (CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING "Choose the type of build, options are: Debug RelWithAsserts RelWithDebInfo Release" FORCE) # Discover all the relevant environment / system information and place the # result in STAR_* cmake variables. @@ -135,7 +146,7 @@ IF (DEFINED STAR_ENABLE_STEAM_INTEGRATION) ENDIF () IF (DEFINED STAR_ENABLE_DISCORD_INTEGRATION) - MESSAGE (STATUS "Using Discrod platform services: ${STAR_ENABLE_DISCORD_INTEGRATION}") + MESSAGE (STATUS "Using Discord platform services: ${STAR_ENABLE_DISCORD_INTEGRATION}") ENDIF () MESSAGE (STATUS "Using Lua API checks: ${STAR_LUA_APICHECK}") @@ -364,7 +375,11 @@ ELSEIF (STAR_SYSTEM_WINDOWS) SET (CMAKE_RC_COMPILER_INIT windres) ENABLE_LANGUAGE (RC) - SET (CMAKE_RC_COMPILE_OBJECT " -O coff -i -o ") + IF (STAR_COMPILER STREQUAL "msvc") + SET (CMAKE_RC_COMPILE_OBJECT " /fo ") + ELSE () + SET (CMAKE_RC_COMPILE_OBJECT " -O coff -i -o ") + ENDIF() ENDIF () IF (STAR_COMPILER STREQUAL "msvc") diff --git a/source/CMakeSettings.json b/source/CMakeSettings.json new file mode 100644 index 0000000..2ef152b --- /dev/null +++ b/source/CMakeSettings.json @@ -0,0 +1,46 @@ +{ + "configurations": [ + { + "name": "x64-RelWithDebInfo", + "generator": "Ninja", + "configurationType": "RelWithDebInfo", + "inheritEnvironments": [ "msvc_x64_x64" ], + "buildRoot": "${projectDir}\\..\\build", + "installRoot": "${projectDir}\\..\\out\\install\\${name}", + "cmakeCommandArgs": "-DCMAKE_INCLUDE_PATH=\"..\\lib\\windows64\\include\" -DCMAKE_LIBRARY_PATH=\"..\\lib\\windows64\"", + "variables": [ + { + "name": "STAR_ENABLE_STEAM_INTEGRATION", + "value": "True", + "type": "BOOL" + }, + { + "name": "STAR_ENABLE_DISCORD_INTEGRATION", + "value": "True", + "type": "BOOL" + } + ] + }, + { + "name": "x64-Release", + "generator": "Ninja", + "configurationType": "Release", + "buildRoot": "${projectDir}\\..\\build", + "installRoot": "${projectDir}\\..\\out\\install\\${name}", + "cmakeCommandArgs": "-DCMAKE_INCLUDE_PATH=\"..\\lib\\windows64\\include\" -DCMAKE_LIBRARY_PATH=\"..\\lib\\windows64\"", + "inheritEnvironments": [ "msvc_x64_x64" ], + "variables": [ + { + "name": "STAR_ENABLE_STEAM_INTEGRATION", + "value": "True", + "type": "BOOL" + }, + { + "name": "STAR_ENABLE_DISCORD_INTEGRATION", + "value": "True", + "type": "BOOL" + } + ] + } + ] +} \ No newline at end of file