Voglio impedire alle persone di ingombrare il nostro albero dei sorgenti con file CMake generati ... e, cosa ancora più importante, non consentire loro di passare allo Makefiles
esistente che non fa parte dello stesso processo di generazione per cui utilizziamo CMake. (Meglio non chiedere)Con cmake, come si disabiliteranno le build in-source?
Il modo in cui sono venuto su con per farlo è quello di avere poche righe nella parte superiore della mia CMakeLists.txt
, come segue:
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}")
Tuttavia, facendo in questo modo sembra troppo prolisso. Inoltre, se provo una build in-source, crea ancora la directory CMakeFiles/
e il file CMakeCache.txt
nell'albero di origine prima che venga generato l'errore.
Mi manca un modo migliore per farlo?
Lo facciamo esattamente come questo. – JesperE
Questa è la soluzione migliore che ho trovato finora. Potresti rendere il messaggio più informativo, tuttavia: messaggio (FATAL_ERROR "Le build in-source non sono consentite. Crea una cartella separata per la costruzione: \ nmkdir build; cd build; cmake .. \ nPrima di quello, rimuovi i file già creati: \ nrm -rf CMakeCache.txt CMakeFiles ") – Tronic