2013-10-24 2 views
7

Проблема: CONFIG (debug, debug | release) и CONFIG (release, deubg | release) всегда оцениваются везде, где отладка или выпуск выбираются в Qt Creator 2.8.1 для Linux.Коммутаторы Qt Creator CONFIG (отладка, выпуск) НЕ работают

Моя конфигурация в приложении Qt Creator (запас - по умолчанию для нового проекта):

Projects->Build Settings->Debug Build Steps: 
    qmake build configuration: Debug 
    Effective qmake call: qmake2 proj.pro -r -spec linux-gnueabi-oe-g++ CONFIG+=debug 

Projects->Build Settings->Release Build Steps: 
    qmake build configuration: Release 
    Effective qmake call: qmake2 proj.pro -r -spec linux-gnueabi-oe-g++ 

Моя конфигурация в proj.pro:

message(Variable CONFIG:) 
message($$CONFIG) 
CONFIG(debug,debug|release) 
{ 
    message(Debug build) 
} 
CONFIG(release,debug|release) 
{ 
    message(Release build) 
} 

Вывод на консоль для отладки:

Project MESSAGE: Variable CONFIG: 
Project MESSAGE: lex yacc warn_on debug uic resources warn_on release incremental link_prl no_mocdepend release stl qt_no_framework debug console 
Project MESSAGE: Debug build 
Project MESSAGE: Release build 

Выход на консоль для выпуска:

Project MESSAGE: Variable CONFIG: 
Project MESSAGE: lex yacc warn_on uic resources warn_on release incremental link_prl no_mocdepend release stl qt_no_framework console 
Project MESSAGE: Debug build 
Project MESSAGE: Release build 

В Windows 7 У меня не было проблем с такой конфигурацией .pro, и она работала нормально. я был отчаянным и модифицированный файл .pro:

CONFIG = test 
message(Variable CONFIG:) 
message($$CONFIG) 
CONFIG(debug,debug|release) 
{ 
    message(Debug build) 
} 
CONFIG(release,debug|release) 
{ 
    message(Release build) 
} 

и я был удивлён с выходом:

Project MESSAGE: Variable CONFIG: 
Project MESSAGE: test 
Project MESSAGE: Debug build 
Project MESSAGE: Release build 

так что даже если я укомплектовать чистой переменной CONFIG это все еще видеть отладки и выпуска конфигурации.

Что я делаю неправильно?

+0

Возможно, попробуйте запустить 'qmake CONFIG- = Debug' для выпуска и 'qmake CONFIG- = Release' для отладки – dvvrd

+0

Как вы можете видеть в котировке первого кода Im, делаю это. – killdaclick

+0

Нет, я не знаю. Я вижу 'CONFIG + = debug', а не' CONFIG- = debug' – dvvrd

ответ

18

Qmake безумный, это единственное жизнеспособное объяснение. Весь выпуск/отладка, находящаяся в конфигурации несколько раз, пахнет старой ошибкой дизайна, которая никогда не была решена до того, как было поздно, и уже было написано слишком много конфигураций. Помните вкладки в make? У чувака было 15 пользователей, поэтому он никогда не исправлял плохие решения.

В любом случае.

Я вижу ту же проблему на linux, на Qt 4.8.4.1.

И вот решение: удалить разрыв линии до фигурного скобки.

Буквально, это работает:

CONFIG(release, debug|release) { 
    message(Release) 
} 

CONFIG(debug, debug|release) { 
    message(Debug) 
} 

Хотя это не делает:

CONFIG(release, debug|release) 
{ 
    message(Release) 
} 

CONFIG(debug, debug|release) 
{ 
    message(Debug) 
} 

Я подозреваю, что это ошибка синтаксического анализа в нескольких версиях QMAKE, возможно только на Linux стороне.

+1

спасибо! эта ошибка существует и на окнах –

+1

Еще проблема в Windows, Qt 5.3.1, Qt Creator 3.1.2 –

+0

Добавьте Qt 5.6 в этот список ... -______- –

Смежные вопросы