- # purpose : 自动构建 Unity Build 编译方式的 CMake 脚本
- # 描述:自动构建 Unity Build 编译方式
- #
- # 用例:
- # file(GLOB SOURCE_FILES ${PROJECT_SOURCE_DIR}/*.cpp)
- # set_unity_build(SOURCE_FILES true)
- #
- # 作用:自动生成 unity_build.cpp 并构建 Unity Build 编译方式 ,提高编译速度。
- macro(set_unity_build filesVarName enable)
- set(PROJECT_SOURCES ${${filesVarName}})
- foreach(filename ${PROJECT_SOURCES})
- set_property(SOURCE ${filename} PROPERTY HEADER_FILE_ONLY ${enable})
- endforeach(filename ${PROJECT_SOURCES})
- set(UNITY_BUILD_FILE ${PROJECT_SOURCE_DIR}/unity_build.cpp)
- if (${enable})
- file(WRITE ${UNITY_BUILD_FILE} "// unity_build.cpp\\n\\n" )
- foreach(filename ${PROJECT_SOURCES})
- if (NOT filename MATCHES "unity_build.cpp")
- file(APPEND ${UNITY_BUILD_FILE} "#include \\"" ${filename} "\\"\\n")
- endif(NOT filename MATCHES "unity_build.cpp")
- endforeach(filename ${PROJECT_SOURCES})
- set_property(SOURCE ${UNITY_BUILD_FILE} PROPERTY HEADER_FILE_ONLY FALSE)
- else (${enable})
- file(APPEND ${UNITY_BUILD_FILE} "")
- set_property(SOURCE ${UNITY_BUILD_FILE} PROPERTY HEADER_FILE_ONLY TRUE)
- endif(${enable})
- list(APPEND ${filesVarName} ${UNITY_BUILD_FILE})
- endmacro(set_unity_build filesVarName enable)
- //该片段来自于http://www.codesnippet.cn/detail/250120131932.html
来源: http://www.codesnippet.cn/detail/250120131932.html