diff options
Diffstat (limited to 'build_files/cmake/macros.cmake')
-rw-r--r-- | build_files/cmake/macros.cmake | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 25a8b66af51..34c2c9a684d 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -1292,6 +1292,29 @@ macro(openmp_delayload endif() endmacro() +macro(blender_precompile_headers target cpp header) + if(MSVC) + # get the name for the pch output file + get_filename_component(pchbase ${cpp} NAME_WE) + set(pchfinal "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${pchbase}.pch") + + # mark the cpp as the one outputting the pch + set_property(SOURCE ${cpp} APPEND PROPERTY OBJECT_OUTPUTS "${pchfinal}") + + # get all sources for the target + get_target_property(sources ${target} SOURCES) + + # make all sources depend on the pch to enforce the build order + foreach(src ${sources}) + set_property(SOURCE ${src} APPEND PROPERTY OBJECT_DEPENDS "${pchfinal}") + endforeach() + + target_sources(${target} PRIVATE ${cpp} ${header}) + set_target_properties(${target} PROPERTIES COMPILE_FLAGS "/Yu${header} /Fp${pchfinal} /FI${header}") + set_source_files_properties(${cpp} PROPERTIES COMPILE_FLAGS "/Yc${header} /Fp${pchfinal}") + endif() +endmacro() + macro(set_and_warn_dependency _dependency _setting _val) # when $_dependency is disabled, forces $_setting = $_val |