Native cmake precompiled header support
Works in version 3.16 of cmake
This commit is contained in:
parent
31d0bf8c80
commit
09fee927da
@ -1,21 +1,29 @@
|
|||||||
cmake_minimum_required(VERSION 3.10)
|
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.
|
# Ensure that only 32 bit libraries are used.
|
||||||
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/Toolchain-cross-m32.cmake")
|
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/Toolchain-cross-m32.cmake")
|
||||||
|
|
||||||
# Don't enable cotire when running in QtCreator
|
if (EnablePrecompiledHeaders AND EnableCotire)
|
||||||
execute_process(COMMAND "printenv" OUTPUT_VARIABLE contents)
|
# Don't enable cotire when running in QtCreator
|
||||||
STRING(REGEX REPLACE ";" "\\\\;" contents "${contents}")
|
execute_process(COMMAND "printenv" OUTPUT_VARIABLE contents)
|
||||||
STRING(REGEX REPLACE "\n" ";" contents "${contents}")
|
STRING(REGEX REPLACE ";" "\\\\;" contents "${contents}")
|
||||||
foreach(text ${contents})
|
STRING(REGEX REPLACE "\n" ";" contents "${contents}")
|
||||||
|
foreach(text ${contents})
|
||||||
if ("${text}" STREQUAL "CC=")
|
if ("${text}" STREQUAL "CC=")
|
||||||
message("qtcreator running")
|
message("qtcreator running")
|
||||||
set(EnableCotire 0)
|
set(EnableCotire 0)
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
endif()
|
||||||
|
|
||||||
if (EnableCotire)
|
if (EnablePrecompiledHeaders AND EnableCotire)
|
||||||
set (CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/external/cotire/CMake")
|
set (CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/external/cotire/CMake")
|
||||||
include(cotire)
|
include(cotire)
|
||||||
file(GLOB_RECURSE ignore_files *.cpp)
|
file(GLOB_RECURSE ignore_files *.cpp)
|
||||||
@ -199,17 +207,19 @@ add_subdirectory(include)
|
|||||||
add_subdirectory(external)
|
add_subdirectory(external)
|
||||||
add_subdirectory(modules)
|
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_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_ADD_UNITY_BUILD true)
|
||||||
set_target_properties(cathook PROPERTIES COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES 30)
|
set_target_properties(cathook PROPERTIES COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES 30)
|
||||||
set_source_files_properties(${ignore_files} PROPERTIES COTIRE_EXCLUDED true)
|
set_source_files_properties(${ignore_files} PROPERTIES COTIRE_EXCLUDED true)
|
||||||
cotire(cathook)
|
cotire(cathook)
|
||||||
|
elseif(EnablePrecompiledHeaders)
|
||||||
|
target_precompile_headers(cathook PRIVATE "${CMAKE_SOURCE_DIR}/include/common.hpp")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_custom_command(TARGET cathook POST_BUILD
|
add_custom_command(TARGET cathook POST_BUILD
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:cathook> "${CMAKE_SOURCE_DIR}/bin/$<TARGET_FILE_NAME:cathook>")
|
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:cathook> "${CMAKE_SOURCE_DIR}/bin/$<TARGET_FILE_NAME:cathook>")
|
||||||
if (EnableCotire)
|
if (EnablePrecompiledHeaders AND EnableCotire)
|
||||||
add_custom_command(TARGET cathook_unity POST_BUILD
|
add_custom_command(TARGET cathook_unity POST_BUILD
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:cathook_unity> "${CMAKE_SOURCE_DIR}/bin/$<TARGET_FILE_NAME:cathook_unity>")
|
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:cathook_unity> "${CMAKE_SOURCE_DIR}/bin/$<TARGET_FILE_NAME:cathook_unity>")
|
||||||
endif()
|
endif()
|
||||||
|
@ -5,7 +5,8 @@
|
|||||||
* Author: nullifiedcat
|
* Author: nullifiedcat
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#ifndef CH_TIMER_HPP
|
||||||
|
#define CH_TIMER_HPP
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
|
|
||||||
class Timer
|
class Timer
|
||||||
@ -36,3 +37,4 @@ public:
|
|||||||
public:
|
public:
|
||||||
std::chrono::time_point<clock> last{};
|
std::chrono::time_point<clock> last{};
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
Reference in New Issue
Block a user