Russian Qt Forum
Ноябрь 24, 2024, 13:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Области видимости при debug и release в файле проекта  (Прочитано 5011 раз)
Impuls
Гость
« : Ноябрь 29, 2012, 21:36 »

Доброго времени суток. Хочу собирать файлы в разных папках при разных режимах сборки. Делаю в *.pro файле так:
Код:
release {                          #Релизная сборка
    PREFIX = ../RELEASE
    POSTFIX = release
} else:debug {                  #Дебаг сборка
    PREFIX = ../DEBUG
    POSTFIX = debug
}
#--------------Операционная система
unix {
    OS = unix
}

win32 {
    OS = win32
}

DESTDIR = $${PREFIX}/$${OS}_bin                                     #Путь к файлам исходников
OBJECTS_DIR = $${PREFIX}/$${TARGET}/$${OS}_obj            #Путь к объектным файлам
MOC_DIR = $${PREFIX}/$${TARGET}/$${OS}_moc                #Путь к moc файлам

Но все равно все собирается в папку RELEASE
Скажите что я делаю не так.
И еще. Скажите, можно ли указать другой каталог для Make файла?

Заранее спасибо
« Последнее редактирование: Ноябрь 29, 2012, 21:38 от Impuls » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Ноябрь 29, 2012, 23:54 »

CONFIG(release, debug|release) {
    # означает релизную сборку, для дебаг — условие аналогичное
}
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Impuls
Гость
« Ответ #2 : Ноябрь 30, 2012, 13:55 »

CONFIG(release, debug|release) {
    # означает релизную сборку, для дебаг — условие аналогичное
}

Это не совсем то. Такое объявление заставит компилятор скомпилировать в дебаг или релиз. А мне нужно определять в какой именно сборке идет компиляция.
Конечно можно задать и так:
Код:
CONFIG(release, debug|release) {#Релизная сборка
    PREFIX = ../RELEASE
    POSTFIX = release
}
CONFIG(debug, debug|release) {#Дебаг сборка
    PREFIX = ../DEBUG
    POSTFIX = debug
}
Тогда сборка идет в двух версиях одновременно, но хотелось бы сделать по человечески))
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Ноябрь 30, 2012, 14:14 »

эта проверка никого не заставляет, а лишь проверяет, в каком режиме ведётся сборка. попробовал бы хоть для начала, прежде, чем писать.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Impuls
Гость
« Ответ #4 : Ноябрь 30, 2012, 18:04 »

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

А я и попробовал. У меня создалась и релизная и дебаг сборка. Так что либо, я делаю что-то не так, либо это все же указание.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #5 : Ноябрь 30, 2012, 19:26 »

>У меня создалась и релизная и дебаг сборка.
это означает, что у тебя используется
CONFIG += debug_and_release
CONFIG    += build_all

Обычно, то что тебе надо пишут как и сказал kambala, только используя else
Кусок из реального pro-файла:
Код
Bash
CONFIG (debug, debug|release) {
contains(TEMPLATE, lib){
TARGET = $$qtLibraryTarget($$TARGET)
}else{
TARGET   = $$join(TARGET,,,.d)
}
OBJECTS_DIR = $${TMP_DIR}/debug
# Console added in debug mode
CONFIG   += console
}else{
OBJECTS_DIR = $${TMP_DIR}/release
}
 
Записан

Юра.
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #6 : Ноябрь 30, 2012, 20:07 »

debug_and_release — это просто подряд выполняется сборка дебаг и релиз насколько я понял по документации?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #7 : Декабрь 01, 2012, 22:06 »

Документацию не помню Улыбающийся
По опыту:
debug_and_release заставляет qmake генерировать основной Make-файл содержащий команды (цели) для генерации двух вспомогательных файлов (Make.Release и Make.Debug).
А build_all заставляет по команде make обрабатывать обе цели (Make.Release и Make.Debug)
Записан

Юра.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #8 : Декабрь 01, 2012, 22:15 »

Если нет записи
CONFIG += build_all
то по команде make будет обработана только цепочка фалов:
Make -> Make.Debug

Если нет записи
CONFIG += build_all
но есть
CONFIG += release (или qmake использовался с соответствующим аргументом), то по команде make будет обработана только цепочка фалов:
Make -> Make.Release
Записан

Юра.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.168 секунд. Запросов: 23.