2010-11-27 12 views
2

ich hier ein Projekt haben - obwohl ich es unabhängig von der Verpackung verwendet glauben -, dass, wenn konfiguriert mitCmake lehnt bestimmten cflags

cmake -DCMAKE_C_FLAGS_RELEASE="-O2 -msse"

genau diesen Fähnchen. Doch sobald ich

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

cmake zu hartnäckigem Zustand übergeht und ignoriert meine gewünschten Fahnen, statt zu den Projektvorgaben in Verzug. Dies spiegelt sich sogar in CMakeCache.txt wider, obwohl ich nicht weiß, was ich davon halten soll.

CMakeCache.txt:CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG 
CMakeCache.txt:CMAKE_C_FLAGS_RELEASE=-O2 -msse -fmessage-length:UNINITIALIZED=0

Die Frage auf dem Tisch ist - wie bekomme ich meine Fahnen verwendet?

Antwort

3

Diese is a known bug in the command line parsing in CMake. Es wird mit dem Zeichen extra = verwechselt und denkt, dass der Variablenname CMAKE_C_FLAGS_RELEASE=-O2 -msse -fmessage-length mit dem Wert 0 lautet!

Eine Möglichkeit, die Option im Cache im richtigen Format zu erhalten, ist die Verwendung des Cache-Editors. Nach dem Ausführen Cmake zunächst dann t, führen make edit_cache drücken erweiterte Optionen zu wechseln, Ctrl-n bis auf die CMAKE_C_FLAGS_RELEASE Option, traf Geben Sie es und geben Sie den Wert bearbeiten Sie wollen. Nach diesem Typ c dann g zum Konfigurieren und Generieren der Makefiles.

Alternativ bearbeiten nur den Cache mit $ EDITOR und geben Sie die richtige Linie:

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

Dies ist nicht sehr elegant, aber es sollte Ihnen Autofahren bekommen.

2

BTW, auch die Typdeklaration von der Kommandozeile arbeitet, z.B .:

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

sollte funktionieren. Trotzdem etwas peinlich.

Verwandte Themen