2010-11-27 6 views
2

J'ai ici un projet - mais je crois qu'il est indépendant du paquet utilisé - que, lorsqu'il est configuré avecCMake rejette certains cflags

cmake -DCMAKE_C_FLAGS_RELEASE="-O2 -msse"

utilise ces drapeaux exacts. Cependant, dès que je l'utilise

cmake -DCMAKE_C_FLAGS_RELEASE="-O2 -msse -fmessage-length=0"

CMake passe à l'état têtu et ne tient pas compte de mes drapeaux souhaités, par défaut à la place aux valeurs par défaut du projet. Cela se reflète même dans CMakeCache.txt, mais je ne sais pas quoi en faire. La question sur la table est - comment puis-je obtenir mes drapeaux utilisés?

Répondre

3

Cette is a known bug in the command line parsing in CMake. Il devient confus avec le signe extra = et pense que le nom de la variable est CMAKE_C_FLAGS_RELEASE=-O2 -msse -fmessage-length avec la valeur 0!

Une façon d'obtenir l'option dans le cache dans le format correct est d'utiliser l'éditeur de cache. Après avoir exécuté CMake d'abord, exécutez make edit_cache puis appuyez sur t pour activer les options avancées, Ctrl-n jusqu'à l'option CMAKE_C_FLAGS_RELEASE, a frappé Entrez pour le modifier et tapez la valeur que vous voulez. Après ce type c puis g pour configurer et générer les Makefiles.

Sinon, il suffit de modifier le cache avec votre $ EDITOR et entrez la ligne correcte:

CMAKE_C_FLAGS_RELEASE:STRING=-O2 -msse -fmessage-length=0 

Ce n'est pas très élégant, mais il devrait vous aider à l'automobile.

2

BTW, la déclaration de type fonctionne également à partir de la ligne de commande, par exemple .:

cmake -DCMAKE_C_FLAGS_RELEASE:STRING="-O2 -msse -fmessage-length=0" 

devrait fonctionner. Encore un peu maladroit quand même.