| 12345678910111213141516171819202122232425262728 |
- # Filename: MakeComposite.cmake
- #
- # Description: When run, creates a single C++ file which includes multiple
- # other C++ files, to help facilitate unity builds.
- # Unity builds provide significantly increased compile speed.
- #
- # Usage:
- # This script is invoked via add_custom_target, like this:
- # cmake -P MakeComposite.cmake -D COMPOSITE_FILE="x_composite1.cxx" -D COMPOSITE_SOURCES="a.cxx b.cxx"
- #
- if(CMAKE_SCRIPT_MODE_FILE)
- if(NOT DEFINED COMPOSITE_FILE)
- message(FATAL_ERROR "COMPOSITE_FILE should be defined when running MakeComposite.cmake!")
- return()
- endif()
- file(WRITE "${COMPOSITE_FILE}" "/* Generated by CMake. DO NOT EDIT. */\n")
- separate_arguments(COMPOSITE_SOURCES)
- foreach(source ${COMPOSITE_SOURCES})
- file(APPEND "${COMPOSITE_FILE}" "#include \"${source}\"\n")
- endforeach()
- else()
- message(SEND_ERROR "MakeComposite.cmake should not be included but run in script mode.")
- endif()
|