# Copyright (C) 2008-2019 TrinityCore # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. set(CMAKE_GENERATOR_TOOLSET "v141" CACHE STRING "CMAKE_GENERATOR_TOOLSET" FORCE) set(CMAKE_VS_PLATFORM_TOOLSET "v141" CACHE STRING "CMAKE_VS_PLATFORM_TOOLSET" FORCE) # We require CMake >= 3.2 cmake_minimum_required(VERSION 3.2) # add this options before PROJECT keyword set(CMAKE_DISABLE_SOURCE_CHANGES ON) set(CMAKE_DISABLE_IN_SOURCE_BUILD ON) # Set projectname (must be done AFTER setting configurationtypes) project(TrinityCore) # CMake policies (can not be handled elsewhere) cmake_policy(SET CMP0005 OLD) if(POLICY CMP0043) cmake_policy(SET CMP0043 OLD) # Disable 'Ignore COMPILE_DEFINITIONS_ properties' endif() if(POLICY CMP0054) cmake_policy(SET CMP0054 NEW) # Only interpret if() arguments as variables or keywords when unquoted - prevents intepreting if (SOME_STRING_VARIABLE MATCHES "MSVC") as if (SOME_STRING_VARIABLE MATCHES "1") endif() # Set RPATH-handing (CMake parameters) set(CMAKE_SKIP_BUILD_RPATH 0) set(CMAKE_BUILD_WITH_INSTALL_RPATH 0) set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") set(CMAKE_INSTALL_RPATH_USE_LINK_PATH 1) # set macro-directory list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/macros" "${CMAKE_SOURCE_DIR}/dep/cotire/CMake") # build in Release-mode by default if not explicitly set if( NOT CMAKE_BUILD_TYPE ) set(CMAKE_BUILD_TYPE "RelWithDebInfo") endif() include(CheckCXXSourceRuns) include(CheckIncludeFiles) include(ConfigureScripts) # set default buildoptions and print them include(cmake/options.cmake) # turn off PCH totally if enabled (hidden setting, mainly for devs) if( NOPCH ) set(USE_COREPCH 0) set(USE_SCRIPTPCH 0) endif() include(ConfigureBaseTargets) include(CheckPlatform) include(GroupSources) include(AutoCollect) find_package(PCHSupport) find_package(MySQL) if(NOT WITHOUT_GIT) find_package(Git) endif() # Find revision ID and hash of the sourcetree include(cmake/genrev.cmake) # print out the results before continuing include(cmake/showoptions.cmake) # add dependencies add_subdirectory(dep) # add core sources add_subdirectory(src)