Chcę uniemożliwić ludziom zaśmiecanie naszego drzewa źródłowego wygenerowanymi plikami CMake ... i, co ważniejsze, zabronić im wchodzenia na istniejące Makefiles
, które nie są częścią tego samego procesu kompilacji, dla którego używamy CMake. (Najlepiej nie pytać)Z cmake, w jaki sposób wyłączyć kompilacje w źródle?
sposób mam wymyślić, aby to zrobić, aby mieć kilka linii na szczycie mojej CMakeLists.txt
, co następuje:
if("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}")
message(SEND_ERROR "In-source builds are not allowed.")
endif("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}")
jednak robi to w ten sposób wydaje zbyt szczegółowe. Ponadto, jeśli spróbuję kompilacji w źródle, nadal tworzy ona katalog CMakeFiles/
i plik CMakeCache.txt
w drzewie źródłowym, zanim zostanie zgłoszony błąd.
Czy brakuje mi lepszego sposobu na zrobienie tego?
robimy to dokładnie w ten sposób. – JesperE
To najlepsze rozwiązanie, jakie dotychczas znalazłem. Możesz jednak uczynić wiadomość bardziej informatywną: message (FATAL_ERROR "Kompilacje In-source są niedozwolone. Utwórz osobny folder do budowania: \ nmkdir kompilacja; cd kompilacja; cmake .. \ nPrzed tym usuń pliki już utworzone: \ nrm -rf CMakeCache.txt CMakeFiles ") – Tronic