cmake_minimum_required(VERSION 3.16.0 FATAL_ERROR) project(MinecraftConsoles C CXX) ################################################################################ # Set target arch type if empty. Visual studio solution generator provides it. ################################################################################ set(CMAKE_VS_PLATFORM_NAME "Linux") ################################################################################ # Global configuration types ################################################################################ set(CMAKE_CONFIGURATION_TYPES "ContentPackage" "ContentPackage_NO_TU" "CONTENTPACKAGE_SYMBOLS" "Debug" "Release" "ReleaseForArt" CACHE STRING "" FORCE ) ################################################################################ # Global compiler options ################################################################################ if(MSVC) # remove default flags provided with CMake for MSVC set(CMAKE_C_FLAGS "") set(CMAKE_C_FLAGS_CONTENTPACKAGE "") set(CMAKE_C_FLAGS_CONTENTPACKAGE_NO_TU "") set(CMAKE_C_FLAGS_CONTENTPACKAGE_SYMBOLS "") set(CMAKE_C_FLAGS_DEBUG "") set(CMAKE_C_FLAGS_RELEASE "") set(CMAKE_C_FLAGS_RELEASEFORART "") set(CMAKE_CXX_FLAGS "") set(CMAKE_CXX_FLAGS_CONTENTPACKAGE "") set(CMAKE_CXX_FLAGS_CONTENTPACKAGE_NO_TU "") set(CMAKE_CXX_FLAGS_CONTENTPACKAGE_SYMBOLS "") set(CMAKE_CXX_FLAGS_DEBUG "") set(CMAKE_CXX_FLAGS_RELEASE "") set(CMAKE_CXX_FLAGS_RELEASEFORART "") endif() ################################################################################ # Global linker options ################################################################################ if(MSVC) # remove default flags provided with CMake for MSVC set(CMAKE_EXE_LINKER_FLAGS "") set(CMAKE_MODULE_LINKER_FLAGS "") set(CMAKE_SHARED_LINKER_FLAGS "") set(CMAKE_STATIC_LINKER_FLAGS "") set(CMAKE_EXE_LINKER_FLAGS_CONTENTPACKAGE "${CMAKE_EXE_LINKER_FLAGS}") set(CMAKE_MODULE_LINKER_FLAGS_CONTENTPACKAGE "${CMAKE_MODULE_LINKER_FLAGS}") set(CMAKE_SHARED_LINKER_FLAGS_CONTENTPACKAGE "${CMAKE_SHARED_LINKER_FLAGS}") set(CMAKE_STATIC_LINKER_FLAGS_CONTENTPACKAGE "${CMAKE_STATIC_LINKER_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS_CONTENTPACKAGE_NO_TU "${CMAKE_EXE_LINKER_FLAGS}") set(CMAKE_MODULE_LINKER_FLAGS_CONTENTPACKAGE_NO_TU "${CMAKE_MODULE_LINKER_FLAGS}") set(CMAKE_SHARED_LINKER_FLAGS_CONTENTPACKAGE_NO_TU "${CMAKE_SHARED_LINKER_FLAGS}") set(CMAKE_STATIC_LINKER_FLAGS_CONTENTPACKAGE_NO_TU "${CMAKE_STATIC_LINKER_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS_CONTENTPACKAGE_SYMBOLS "${CMAKE_EXE_LINKER_FLAGS}") set(CMAKE_MODULE_LINKER_FLAGS_CONTENTPACKAGE_SYMBOLS "${CMAKE_MODULE_LINKER_FLAGS}") set(CMAKE_SHARED_LINKER_FLAGS_CONTENTPACKAGE_SYMBOLS "${CMAKE_SHARED_LINKER_FLAGS}") set(CMAKE_STATIC_LINKER_FLAGS_CONTENTPACKAGE_SYMBOLS "${CMAKE_STATIC_LINKER_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS}") set(CMAKE_MODULE_LINKER_FLAGS_DEBUG "${CMAKE_MODULE_LINKER_FLAGS}") set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS}") set(CMAKE_STATIC_LINKER_FLAGS_DEBUG "${CMAKE_STATIC_LINKER_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS}") set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS}") set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS}") set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS_RELEASEFORART "${CMAKE_EXE_LINKER_FLAGS}") set(CMAKE_MODULE_LINKER_FLAGS_RELEASEFORART "${CMAKE_MODULE_LINKER_FLAGS}") set(CMAKE_SHARED_LINKER_FLAGS_RELEASEFORART "${CMAKE_SHARED_LINKER_FLAGS}") set(CMAKE_STATIC_LINKER_FLAGS_RELEASEFORART "${CMAKE_STATIC_LINKER_FLAGS}") endif() ################################################################################ # Nuget packages function stub. ################################################################################ function(use_package TARGET PACKAGE VERSION) message(WARNING "No implementation of use_package. Create yours. " "Package \"${PACKAGE}\" with version \"${VERSION}\" " "for target \"${TARGET}\" is ignored!") endfunction() ################################################################################ # Common utils ################################################################################ include(CMake/Utils.cmake) ################################################################################ # Additional Global Settings(add specific info there) ################################################################################ include(CMake/GlobalSettingsInclude.cmake OPTIONAL) ################################################################################ # Use solution folders feature ################################################################################ set_property(GLOBAL PROPERTY USE_FOLDERS ON) ################################################################################ # Sub-projects ################################################################################ add_subdirectory(Minecraft.Client) add_subdirectory(Minecraft.World)