Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Radmir от Июль 31, 2014, 17:37



Название: define in *.pro
Отправлено: Radmir от Июль 31, 2014, 17:37
Поделитесь уважаемые, как задать в *.pro переменную типа define для debug версии проекта и не задать для релиза. Я замучился, как ни задам, либо в обоих есть переменная, либо в обоих нет.

Радмир


Название: Re: define in *.pro
Отправлено: gil9red от Июль 31, 2014, 18:24
Судя по доке: http://qt-project.org/doc/qt-4.8/qmake-tutorial.html
Код:
debug { 
         CONFIG += console
     }

Аналогично условие ставится и для релиза :)


UPDATE.
А тут показано как дефайны свои делать: http://stackoverflow.com/questions/3348711/add-a-define-to-qmake-with-a-value


Название: Re: define in *.pro
Отправлено: Radmir от Июль 31, 2014, 18:35
Судя по доке: http://qt-project.org/doc/qt-4.8/qmake-tutorial.html
Код:
debug { 
         CONFIG += console
     }

Аналогично условие ставится и для релиза :)


UPDATE.
А тут показано как дефайны свои делать: http://stackoverflow.com/questions/3348711/add-a-define-to-qmake-with-a-value

Вы не поняли вопрос:
Я хочу задать переменную, (типа как в программе мы пишем #define Pi) для конфигурации debug и не задавать для конфигурации release.
В проекте мне не удалось, пришлось в программе задать:

#ifdef QT_NO_DEBUG
#define Pi
#endif

Как видите, чайник предполагает, а Qt располагает...
Радмир


Название: Re: define in *.pro
Отправлено: gil9red от Июль 31, 2014, 18:56
Судя по доке: http://qt-project.org/doc/qt-4.8/qmake-tutorial.html
Код:
debug { 
         CONFIG += console
     }

Аналогично условие ставится и для релиза :)


UPDATE.
А тут показано как дефайны свои делать: http://stackoverflow.com/questions/3348711/add-a-define-to-qmake-with-a-value

Вы не поняли вопрос:
Я хочу задать переменную, (типа как в программе мы пишем #define Pi) для конфигурации debug и не задавать для конфигурации release.
В проекте мне не удалось, пришлось в программе задать:

#ifdef QT_NO_DEBUG
#define Pi
#endif

Как видите, чайник предполагает, а Qt располагает...
Радмир

Я вам описал как писать условия в pro файле на примере debug, а в ссылке показано как пользовательские дефайны в pro описывать, соедините вместе и получите что хотели


Название: Re: define in *.pro
Отправлено: kambala от Июль 31, 2014, 23:07
debug: DEFINES += MYDEFINE


Название: Re: define in *.pro
Отправлено: Radmir от Август 01, 2014, 06:27
debug: DEFINES += MYDEFINE
А я вам написал, что если одну и туже переменную задать в строчке
debug: DEFINES += MYDEFINE
в строчке release,
release: DEFINES -= MYDEFINE
то в обоих makefile-ах будут обе переменные,
 :-\
Радмир


Название: Re: define in *.pro
Отправлено: kambala от Август 01, 2014, 11:32
release: DEFINES -= MYDEFINE — зачем это вообще писать? debug: DEFINES += MYDEFINE задаст MYDEFINE только для дебага


Название: Re: define in *.pro
Отправлено: Radmir от Август 01, 2014, 17:51
debug: DEFINES += MYDEFINE
Я не знаю, почему вы не принимаете, то что я пишу: я говорю, что определить переменную для одного релиза или дибага невозможно.
Вот строка из мейкфайла дибаг
DEFINES       = -DQUAZIP_BUILD -DMYDEFINE -DQT_WEBKIT_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED
и строка из мейкфайла релиз
DEFINES       = -DQUAZIP_BUILD -DMYDEFINE -DQT_NO_DEBUG -DQT_WEBKIT_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED

Как видите опция -DMYDEFINE есть в обоих мейках!
Прошу больше не дискутировать, просто считайте вопрос закрытым, или пишите в личку.

Радмир.


Название: Re: define in *.pro
Отправлено: kambala от Август 04, 2014, 15:53
Судя по доке: http://qt-project.org/doc/qt-4.8/qmake-tutorial.html
Код:
debug { 
         CONFIG += console
     }
вот поверил на слово человеку, а кода под рукой не оказалось.

правильно так:
Код:
CONFIG(release, debug|release): IS_RELEASE_BUILD = 1
isEmpty(IS_RELEASE_BUILD): DEFINES += DEFINE_DEBUG
else: DEFINES += DEFINE_RELEASE


Название: Re: define in *.pro
Отправлено: __Heaven__ от Август 04, 2014, 16:09
Действительно, а почему первый вариант не работает? Я тоже в коде прописал - убедился.
В чём дело?


Название: Re: define in *.pro
Отправлено: kambala от Август 04, 2014, 16:42
потому что debug надо самому добавлять в CONFIG. по ссылке: CONFIG += qt debug


Название: Re: define in *.pro
Отправлено: __Heaven__ от Август 04, 2014, 16:53
Быть маркером - это его основное назначение.


Название: Re: define in *.pro
Отправлено: Alex Custov от Август 04, 2014, 17:58
я проверил у себя под виндой с официальной сборкой Qt (которая debug-and-release). Оказывается, при любом типе сборке проекта в CONFIG будут строки debug, release, и debug_and_release.


Название: Re: define in *.pro
Отправлено: kambala от Август 04, 2014, 20:54
при сталине в 4.8.5 такой херни нету!