Cmake отвергает некоторые флаги - PullRequest
2 голосов
/ 28 ноября 2010

У меня есть проект - хотя я полагаю, что он не зависит от используемого пакета - что при настройке с

cmake -DCMAKE_C_FLAGS_RELEASE="-O2 -msse"

использует эти точные флаги. Однако, как только я использую

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

cmake переходит в упрямое состояние и игнорирует мои нужные флаги, вместо этого по умолчанию используется проект по умолчанию. Это даже отражено в CMakeCache.txt, хотя я не знаю, что с этим делать.

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

Вопрос на столе - как мне использовать мои флаги?

Ответы [ 2 ]

3 голосов
/ 28 ноября 2010

Это - известная ошибка в разборе командной строки в CMake .Он путается со знаком extra = и думает, что имя переменной CMAKE_C_FLAGS_RELEASE=-O2 -msse -fmessage-length со значением 0!

Один из способов получить опцию в кеше в правильном формате - использовать редактор кеша.После первоначального запуска cmake, запустите make edit_cache, затем нажмите t , чтобы переключить дополнительные параметры, Ctrl-n до опции CMAKE_C_FLAGS_RELEASE, нажмите Enter для редактированияэто и введите значение, которое вы хотите.После этого наберите c , затем g , чтобы сконфигурировать и сгенерировать Make-файлы.

Либо просто отредактируйте кеш с помощью $ EDITOR и введите правильную строку:

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

Это не очень элегантно, но это должно заставить вас ехать.

2 голосов
/ 29 ноября 2010

Кстати, объявление типа также работает из командной строки, например:

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

должно работать.Все еще немного неловко, хотя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...