@@ -9,6 +9,9 @@ project(OpenKO
99option (OPENKO_BUILD_SERVERS "Build the server projects (default on)" ON )
1010option (OPENKO_COMPILE_WARNINGS_AS_ERROR "Enable treating warnings as errors (default on)" ON )
1111
12+ # Define the bin directory; defaults to repo/bin
13+ set (OPENKO_BIN_DIR "${CMAKE_BINARY_DIR} /bin" CACHE PATH "Directory for final binaries" )
14+
1215if (WIN32 )
1316 # Set the minimum Windows version
1417 set (_WIN32_WINNT "0x0A00" CACHE STRING "Minimum Windows version (default 0x0A00 - Windows 10)" )
@@ -17,9 +20,22 @@ endif()
1720
1821set (SPDLOG_ENABLE_PCH ON CACHE BOOL "Enable PCH in spdlog" )
1922set (NANODBC_FORCE_LIBCXX OFF CACHE BOOL "Force the use of libc++ (default off)" )
20- set (NANODBC_DISABLE_MSSQL_TVP ON "Disable MSSQL Table-valued parameters in nanodbc" )
21- set (NANODBC_DISABLE_NULL_ACCESS_ERROR ON "Disable null_access_error() exceptions in nanodbc" )
22- set (NANODBC_USE_UINT8_FOR_TINYINT ON "Enable use of uint8 to represent TINYINT fields instead of int16 in nanodbc" )
23+ set (NANODBC_DISABLE_MSSQL_TVP ON CACHE BOOL "Disable MSSQL Table-valued parameters in nanodbc" )
24+ set (NANODBC_DISABLE_NULL_ACCESS_ERROR ON CACHE BOOL "Disable null_access_error() exceptions in nanodbc" )
25+ set (NANODBC_USE_UINT8_FOR_TINYINT ON CACHE BOOL "Enable use of uint8 to represent TINYINT fields instead of int16 in nanodbc" )
26+
27+ # Setup output directories
28+ set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${OPENKO_BIN_DIR} /${CMAKE_BUILD_TYPE} " )
29+
30+ set (OPENKO_SERVER_MAP_SRC_DIR "${CMAKE_SOURCE_DIR} /Server/bin/MAP" )
31+ set (OPENKO_SERVER_MAP_DST_DIR "${OPENKO_BIN_DIR} /MAP" )
32+ set (OPENKO_SERVER_QUESTS_SRC_DIR "${CMAKE_SOURCE_DIR} /Server/bin/QUESTS" )
33+ set (OPENKO_SERVER_QUESTS_DST_DIR "${OPENKO_BIN_DIR} /QUESTS" )
34+
35+ # Multi-config generators
36+ foreach (CONFIG_TYPE Debug Release RelWithDebInfo MinSizeRel)
37+ set (CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONFIG_TYPE} "${OPENKO_BIN_DIR} " )
38+ endforeach ()
2339
2440# Setup dependency dir
2541set (OPENKO_DEPS_DIR ${CMAKE_SOURCE_DIR} /deps)
@@ -60,9 +76,9 @@ if(OPENKO_BUILD_SERVERS)
6076 fetchcontent_makeavailable(Boost)
6177 find_package (Boost 1.89.0 EXACT REQUIRED COMPONENTS interprocess)
6278
63- add_subdirectory (deps/FTXUI)
79+ add_subdirectory (deps/FTXUI EXCLUDE_FROM_ALL )
6480
65- add_subdirectory (deps/nanodbc)
81+ add_subdirectory (deps/nanodbc EXCLUDE_FROM_ALL )
6682 target_compile_features (nanodbc PUBLIC cxx_std_20)
6783
6884 # codecvt conversions are being deprecated.
@@ -72,11 +88,20 @@ if(OPENKO_BUILD_SERVERS)
7288 $<$<CXX_COMPILER_ID:Clang>:-Wno-deprecated-declarations>
7389 )
7490
75- add_subdirectory (deps/db-models-cmake)
76- add_subdirectory (deps/db-library-cmake)
91+ add_subdirectory (deps/db-models-cmake EXCLUDE_FROM_ALL )
92+ add_subdirectory (deps/db-library-cmake EXCLUDE_FROM_ALL )
7793
7894 add_subdirectory (Server/shared-server)
79-
95+
96+ add_custom_target (copy-server-assets ALL
97+ COMMENT "Copying server assets"
98+ COMMAND ${CMAKE_COMMAND} -E echo "Copying server MAP dir to ${OPENKO_SERVER_MAP_DST_DIR} "
99+ COMMAND ${CMAKE_COMMAND} -E copy_directory "${OPENKO_SERVER_MAP_SRC_DIR} " "${OPENKO_SERVER_MAP_DST_DIR} "
100+ COMMAND ${CMAKE_COMMAND} -E echo "Copying server QUESTS dir to ${OPENKO_SERVER_QUESTS_DST_DIR} "
101+ COMMAND ${CMAKE_COMMAND} -E copy_directory "${OPENKO_SERVER_QUESTS_SRC_DIR} " "${OPENKO_SERVER_QUESTS_DST_DIR} "
102+ COMMAND ${CMAKE_COMMAND} -E echo "Server assets copied."
103+ )
104+
80105 ###############
81106 # Servers
82107 ###############
0 commit comments