diff --git a/CMakeLists.txt b/CMakeLists.txt index 11abb4c3..4e8dcf39 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,6 +34,7 @@ endif(WIN32) find_package(MaxSDK) #TODO: Only find this if we are building PlasmaMax find_package(Bink) #TODO: Find Bink, but don't require it if plPipeline isn't built... # Or better yet, just eliminate bink altogether +include(PrecompiledHeader) #Precompiled Header helper macros # libCurl isn't smart enough to detect this for us, so we have to configure it ourselves option(CURL_IS_STATIC "Using the static version of libcurl?" ON) diff --git a/cmake/PrecompiledHeader.cmake b/cmake/PrecompiledHeader.cmake new file mode 100644 index 00000000..8392b2e3 --- /dev/null +++ b/cmake/PrecompiledHeader.cmake @@ -0,0 +1,23 @@ +if(MSVC) + set(PCH_SUPPORTED TRUE) +else() + set(PCH_SUPPORTED FALSE) +endif() + +if(PCH_SUPPORTED) + option(PLASMA_USE_PCH "Enable precompiled headers?" ON) +endif(PCH_SUPPORTED) + +macro(use_precompiled_header PrecompiledHeader PrecompiledSource) + if(PLASMA_USE_PCH) + if(MSVC) + get_filename_component(PrecompiledBasename ${PrecompiledHeader} NAME_WE) + set(PrecompiledBinary ${PrecompiledBasename}.pch) + + add_definitions(/Fp"${PrecompiledBinary}") + add_definitions(/Yu"${PrecompiledHeader}") + add_definitions(/FI"${PrecompiledHeader}") + set_source_files_properties(${PrecompiledSource} PROPERTIES COMPILE_FLAGS "/Yc\"${PrecompiledHeader}\"") + endif(MSVC) + endif(PLASMA_USE_PCH) +endmacro(use_precompiled_header) \ No newline at end of file