Comment savoir à CMake que nous générons un paquet?
Question
Je veux une partie du fichier CMakeLists.txt
à être ignoré lorsqu'un utilisateur appelle
make package
Je suis donc à la recherche d'une variable telle que CMAKE_COMMAND ou CMAKE_PACKAGING pour que je puisse faire
if (CMAKE_COMMAND EQUAL 'package') ...
ou
if (CMAKE_PACKAGING) ...
Est-ce exist? Peut-il être atteint?
La solution
CMake génère des fichiers de maquillage qui contiennent certains MAKE « prédéfinis » cibles qui suivent les conventions attendues par ceux qui les utilisent. Des objectifs comme tout, installer, package et test.
Le « install » et « package » sont des cibles généralement, par défaut, dépendent du « tout » faire la cible. (Alors que si vous tapez « make install » il fait un « faire tout » d'abord à assurer que tout est à jour avant l'installation se produit. De même avec « package »).
Qu'est-ce que 'package make' ne fait est de cpack d'appel sous les couvertures:
/full/path/to/cpack --config ./CPackConfig.cmake
Vous pouvez voir cette ligne de commande invoquée si vous exécutez:
make package VERBOSE=1
Quelle partie de votre fichier CMakeLists.txt vous voulez sauter dans le cas de l'emballage? Il n'y a pas de variable telle que celle que vous recherchez, parce que l'emballage ne se produit pas à CMake configure-temps; il se produit plus tard, après le temps de construction, lorsque l'utilisateur « package make » ou explicitement invoque « cpack ».