Quiero prohibir que las personas atemperen nuestro árbol fuente con los archivos CMake generados ... y, lo que es más importante, no permitirles pisar el existente Makefiles
que no forme parte del mismo proceso de compilación para el que estamos utilizando CMake. (Mejor no preguntar)Con cmake, ¿cómo inhabilitarías las compilaciones in-source?
La forma en que he llegado con hacer esto es tener un par de líneas en la parte superior de mi CMakeLists.txt
, de la siguiente manera:
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}")
Sin embargo, hacerlo de esta manera parece demasiado detallado. Además, si intento una compilación in-source, aún crea el directorio CMakeFiles/
y el archivo CMakeCache.txt
en el árbol de fuentes antes de que se produzca el error.
¿Me está faltando una mejor manera de hacerlo?
Lo hacemos exactamente como esta. – JesperE
Esta es la mejor solución que he encontrado hasta ahora. Sin embargo, podría hacer que el mensaje sea más informativo: message (FATAL_ERROR "No se permiten compilaciones in-source. Cree una carpeta separada para compilación: \ nmkdir build; cd build; cmake ... \ nAntes de eso, elimine los archivos ya creados: \ nrm -rf CMakeCache.txt CMakeFiles ") – Tronic