¿Cómo saber en Cmake que estamos generando un paquete?
Pregunta
Quiero una parte del CMakeLists.txt
archivo para ser ignorado cuando un usuario llama
make package
Por lo tanto, estoy buscando una variable como cmake_command o cmake_packaging para poder hacerlo
if (CMAKE_COMMAND EQUAL 'package') ...
o
if (CMAKE_PACKAGING) ...
¿Existe esto? ¿Se puede lograr?
Solución
CMake genera archivos de fabricación que contienen algunos objetivos "predefinidos" que siguen las convenciones esperadas por aquellos que los usan. Objetivos como todos, instalar, paquete y prueba.
El 'Instalar' y el 'Paquete' hacen que los objetivos típicamente, de forma predeterminada, dependan de la tarea de marca 'All'. (De modo que si escribe 'hace la instalación', primero hace todo "para asegurarse de que todo esté actualizado antes de que ocurra la instalación. De manera similar con el 'paquete').
Lo que realmente hace 'hacer paquete' es llamar a Cpack debajo de las portadas:
/full/path/to/cpack --config ./CPackConfig.cmake
Puede ver esta línea de comando invocada si ejecuta:
make package VERBOSE=1
¿Qué parte de su archivo cmakelists.txt desea omitir en el caso de empaque? No hay una variable como la que está buscando, porque el empaque no ocurre en CMake Configuración Tiempo; Ocurre más tarde, después del tiempo de compilación, cuando el usuario invoca explícitamente 'hacer paquete' o 'cpack'.