cmlib/CMLibDisableInSourceBuild.cmake

29 lines
1.4 KiB
CMake
Raw Normal View History

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()
# Очистка от сгенерированных файлов
file(GLOB_RECURSE _cmakelists_files RELATIVE ${_source_realpath} CMakeLists.txt)
2021-06-12 09:59:31 +00:00
foreach(it ${_cmakelists_files})
get_filename_component(_file ${it} REALPATH)
get_filename_component(_dir ${_file} DIRECTORY)
2019-12-03 16:23:14 +00:00
file(
REMOVE_RECURSE
${_dir}/CMakeFiles
${_dir}/CMakeCache.txt
${_dir}/cmake_install.cmake
${_dir}/Makefile
${_dir}/build.ninja
${_dir}/rules.ninja)
endforeach()