From 09fee927da5a0f0ce40f0569402a99f618c73ba0 Mon Sep 17 00:00:00 2001 From: TotallyNotElite <1yourexperiment@protonmail.com> Date: Sat, 19 Oct 2019 11:42:12 +0200 Subject: [PATCH] Native cmake precompiled header support Works in version 3.16 of cmake --- CMakeLists.txt | 38 ++++++++++++++++++++++++-------------- include/timer.hpp | 4 +++- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f486d0d8..0b494516 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,21 +1,29 @@ cmake_minimum_required(VERSION 3.10) -set(EnableCotire 1 CACHE BOOL "Enable CoTiRe (Compile Time Reducer)") +set(EnablePrecompiledHeaders 1 CACHE BOOL "Enable Precompiled Headers to reduce compile time") +if(${CMAKE_VERSION} VERSION_LESS "3.16.0") + set(EnableCotire 1 CACHE BOOL "Enable CoTiRe (Compile Time Reducer)") +else() + set(EnableCotire 0) +endif() + # Ensure that only 32 bit libraries are used. set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/Toolchain-cross-m32.cmake") -# Don't enable cotire when running in QtCreator -execute_process(COMMAND "printenv" OUTPUT_VARIABLE contents) -STRING(REGEX REPLACE ";" "\\\\;" contents "${contents}") -STRING(REGEX REPLACE "\n" ";" contents "${contents}") -foreach(text ${contents}) - if ("${text}" STREQUAL "CC=") - message("qtcreator running") - set(EnableCotire 0) - endif() -endforeach() +if (EnablePrecompiledHeaders AND EnableCotire) + # Don't enable cotire when running in QtCreator + execute_process(COMMAND "printenv" OUTPUT_VARIABLE contents) + STRING(REGEX REPLACE ";" "\\\\;" contents "${contents}") + STRING(REGEX REPLACE "\n" ";" contents "${contents}") + foreach(text ${contents}) + if ("${text}" STREQUAL "CC=") + message("qtcreator running") + set(EnableCotire 0) + endif() + endforeach() +endif() -if (EnableCotire) +if (EnablePrecompiledHeaders AND EnableCotire) set (CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/external/cotire/CMake") include(cotire) file(GLOB_RECURSE ignore_files *.cpp) @@ -199,17 +207,19 @@ add_subdirectory(include) add_subdirectory(external) add_subdirectory(modules) -if (EnableCotire) +if (EnablePrecompiledHeaders AND EnableCotire) set_target_properties(cathook PROPERTIES COTIRE_CXX_PREFIX_HEADER_INIT "${CMAKE_SOURCE_DIR}/include/common.hpp") set_target_properties(cathook PROPERTIES COTIRE_ADD_UNITY_BUILD true) set_target_properties(cathook PROPERTIES COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES 30) set_source_files_properties(${ignore_files} PROPERTIES COTIRE_EXCLUDED true) cotire(cathook) +elseif(EnablePrecompiledHeaders) + target_precompile_headers(cathook PRIVATE "${CMAKE_SOURCE_DIR}/include/common.hpp") endif() add_custom_command(TARGET cathook POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $ "${CMAKE_SOURCE_DIR}/bin/$") -if (EnableCotire) +if (EnablePrecompiledHeaders AND EnableCotire) add_custom_command(TARGET cathook_unity POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $ "${CMAKE_SOURCE_DIR}/bin/$") endif() diff --git a/include/timer.hpp b/include/timer.hpp index 809eedb1..cb398beb 100644 --- a/include/timer.hpp +++ b/include/timer.hpp @@ -5,7 +5,8 @@ * Author: nullifiedcat */ -#pragma once +#ifndef CH_TIMER_HPP +#define CH_TIMER_HPP #include class Timer @@ -36,3 +37,4 @@ public: public: std::chrono::time_point last{}; }; +#endif