Comment capturer CMake arguments de ligne de commande?
Je veux enregistrer les arguments passés à cmake dans mes scripts générés. E. g., "ma-config.dans" seront traitées par cmake, il a une définition comme ceci:
config="@CMAKE_ARGS@"
Après cmake
, my-config
contiendra une ligne quelque chose comme ceci:
config="-DLINUX -DUSE_FOO=y -DCMAKE_INSTALL_PREFIX=/usr"
J'ai essayé CMAKE_ARGS
, CMAKE_OPTIONS
, mais a échoué. Aucun document ne mentionne cela. 🙁
OriginalL'auteur Vivodo | 2012-04-18
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas de n'importe quelle variable qui fournit cette information, mais vous pouvez produire vous-même (avec quelques réserves).
Tout
-D
arguments passés à CMake sont ajoutés au fichier de cacheCMakeCache.txt
dans le répertoire de construction et sont réappliquées lors des appels successifs sans avoir à être spécifié sur la ligne de commande de nouveau.Donc dans votre exemple, si vous exécutez d'abord CMake comme
puis vous verrez que par la suite l'exécution de simplement
aura toujours
CMAKE_INSTALL_PREFIX
ensemble de/usr
Si ce que vous cherchez à partir
CMAKE_ARGS
la liste complète des variables définies sur la ligne de commande de chaque invocation de CMake alors ce qui suit devrait faire l'affaire:C'est un peu fragile car elle repose sur le fait que chaque variable a été définie via la ligne de commande a la phrase "Aucune aide, la variable spécifiée sur la ligne de commande." spécifiée comme
HELPSTRING
de la propriété. Si CMake modifie cette valeur par défautHELPSTRING
, vous devez mettre à jour lesif
déclaration en conséquence.Si ce n'est pas ce que vous voulez
CMAKE_ARGS
à montrer, mais seulement les arguments de l'exécution en cours, alors je ne pense pas qu'il y a un moyen de le faire à court de piratage CMake du code source! Toutefois, je m'attends à ce n'est pas ce que vous voulez puisque tous les précédents arguments de ligne de commande sont effectivement appliqués de nouveau à chaque fois.bat
fichiers et leur comportement incohérent...M'a fallu un moment pour comprendre pourquoi. Pour les futurs SOers, cela ne fonctionnera pas avec les variables CMake.
OriginalL'auteur Fraser
Un moyen de stocker de CMake arguments de ligne de commande, c'est d'avoir un script appelé
~/bin/cmake
(***1) , qui ne à 2 choses:./cmake_call.sh
qui stocke les arguments de ligne de commandecmake
exécutable avec les arguments de ligne de commande~/bin/cmake
# code est indiqué ci-dessousUtilisation:
Cela va créer
cmake_call.sh
avec le contenu suivant:Le 3e de la dernière ligne magasins de la cmake arguments.
Vous pouvez maintenant reinvoke l'exacte ligne de commande que vous avez utilisé en appelant simplement:
Notes de bas de page:
(***1)
~/bin/cmake
est généralement dans le CHEMIN d'accès en raison de~/.profile
. Lors de la création de~/bin/cmake
le très 1ère fois, il peut être nécessaire de déconnecter et de se reconnecter, de sorte que .profil voit~/bin
.OriginalL'auteur ajneu