2019-02-12 16:31:17 +00:00
|
|
|
|
# Запись результатов сборки проекта внутрь иерархии каталогов
|
|
|
|
|
# с исходными текстами приводит к засорению файлами формируемыми
|
|
|
|
|
# на этапе сборки, которые затрудняют разработку, поиск в оригинальных
|
|
|
|
|
# файлах и мешают ориентироваться в проекте. При работе с несколькими
|
|
|
|
|
# типами сборки, например, отладка и выпуск, появляется необходимость
|
|
|
|
|
# корректного полного удаления результатов предыдущего варианта.
|
|
|
|
|
|
|
|
|
|
get_filename_component(_source_realpath "${CMAKE_SOURCE_DIR}" REALPATH)
|
|
|
|
|
get_filename_component(_binary_realpath "${CMAKE_BINARY_DIR}" REALPATH)
|
|
|
|
|
|
|
|
|
|
if(${_source_realpath} STREQUAL ${_binary_realpath})
|
2019-02-16 10:10:12 +00:00
|
|
|
|
message(FATAL_ERROR "In-source builds are not allowed.")
|
2019-02-12 16:31:17 +00:00
|
|
|
|
endif()
|
|
|
|
|
|
2019-02-14 18:48:47 +00:00
|
|
|
|
# Очистка от сгенерированных файлов
|
|
|
|
|
file(GLOB_RECURSE _cmakelists_files RELATIVE ${_source_realpath} CMakeLists.txt)
|
|
|
|
|
foreach(_it ${_cmakelists_files})
|
|
|
|
|
get_filename_component(_file ${_it} REALPATH)
|
|
|
|
|
get_filename_component(_dir ${_file} DIRECTORY)
|
2019-02-16 10:10:12 +00:00
|
|
|
|
file(REMOVE_RECURSE ${_dir}/CMakeFiles
|
|
|
|
|
${_dir}/CMakeCache.txt
|
|
|
|
|
${_dir}/cmake_install.cmake
|
|
|
|
|
${_dir}/Makefile
|
|
|
|
|
${_dir}/build.ninja
|
|
|
|
|
${_dir}/rules.ninja)
|
2019-02-14 18:48:47 +00:00
|
|
|
|
endforeach()
|
|
|
|
|
|