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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: MSVC debug <-> release [решено]  (Прочитано 5913 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Октябрь 17, 2012, 00:56 »

Добрый день

Есть проект, большой, компилится на MSVC минут 40-50. Беда в том что я не могу быстро получать debug/release, То есть вот откомпилил я в debug, погонял, вроде все гуд. Ставлю release, компилю, запускаю, оба-на
Цитировать
vector iterator is out of range
Ну и вообще все STL развалено. Приходится делать "rebuild", тогда все компилится и работает (в рамках MSVC). Но это почти час  Плачущий Наоборот (из release в debug) - то же самое. На меньших проектах этой беды нет. Кто сталкивался - как порешать?

Спасибо
« Последнее редактирование: Октябрь 17, 2012, 18:18 от Igors » Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #1 : Октябрь 17, 2012, 08:48 »

Возможно сейчас у Вас build каталоги для debug и release одинаковые и ошибка при простом build при переходе от debug к release связана с тем, что линковщик пытается слинковать debug объектные файлы с релизными. При rebuild всё пересобирается заново и ошибка пропадает.
В свойствах проекта нужно сравнить значения "Configuraton properties\General\Intermediate directory". Они должны быть разными для release и debug.
Записан
lesav
Частый гость
***
Offline Offline

Сообщений: 235


qnx.org.ru


Просмотр профиля WWW
« Ответ #2 : Октябрь 17, 2012, 10:44 »

Добавить в .pro после объявления TARGET, TEMPLATE , CONFIG, DESTDIR
Код:
TARGET = MyProg
DESTDIR = $$_PRO_FILE_PWD_/../_dest_dir
TEMPLATE = app
#TEMPLATE = lib
#CONFIG += plugin
#===============================
ROOTMYPROJ= $$_PRO_FILE_PWD_

PLATFORM = X3
win32 : PLATFORM = win32
unix   : PLATFORM = unix

# Детектор компилятора
contains( MAKEFILE_GENERATOR, MSVC.NET|MSBUILD ): { # build msvc
   #message("=== msvc build detected!")
   MY_TOOLCHANE = $$sprintf('qt%1_msvc', $$QT_VERSION)
} else: {
   contains( MAKEFILE_GENERATOR, MINGW ): {         # build mingw
       #message("=== mingw build detected!")
       MY_TOOLCHANE = $$sprintf('qt%1_mingw', $$QT_VERSION)
   } else: {
       #message("=== GCC build detected!")
       MY_TOOLCHANE = $$sprintf('qt%1_g++', $$QT_VERSION)
   }
}

# Создание директорий
RCC_DIR      = $$sprintf('$$ROOTMYPROJ/tmp/%1/%2/%3/rcc', $$PLATFORM, $$MY_TOOLCHANE,   $$TARGET)
MOC_DIR      = $$sprintf('$$ROOTMYPROJ/tmp/%1/%2/%3/moc', $$PLATFORM, $$MY_TOOLCHANE,   $$TARGET)
UI_DIR       = $$sprintf('$$ROOTMYPROJ/tmp/%1/%2/%3/_ui', $$PLATFORM, $$MY_TOOLCHANE,   $$TARGET)

# И обязательно различые директории для объектных файлов
CONFIG(debug, debug|release):{
   OBJECTS_DIR = $$sprintf('$$ROOTMYPROJ/tmp/%1/%2/%3/objd', $$PLATFORM, $$MY_TOOLCHANE,   $$TARGET)
   # Добавить префикс d
   TARGET = $$sprintf('%1d', $$TARGET)
}else:{
   OBJECTS_DIR = $$sprintf('$$ROOTMYPROJ/tmp/%1/%2/%3/objr', $$PLATFORM, $$MY_TOOLCHANE,   $$TARGET)
}

# на всякий случай
TARGET=$$TARGET

# и не лениться отлаживать выводом сообщений
message(DESTDIR = $$DESTDIR)
message(DESTDIR = $$OBJECTS_DIR)
message(TARGET  = $$TARGET)
Записан

Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Октябрь 17, 2012, 11:10 »

Возможно сейчас у Вас build каталоги для debug и release одинаковые
Разные, более того я это проверял "живьем": удалил все obj из debug каталога и запустил - debug каталог заполнился заново, а в release каталоге ничего не изменилось

Добавить в .pro после объявления TARGET, TEMPLATE , CONFIG, DESTDIR
Проект не использует Qt. нет pro файла. Можно в терминах (злополучного) MSVC (2008)?
Спасибо
Записан
lesav
Частый гость
***
Offline Offline

Сообщений: 235


qnx.org.ru


Просмотр профиля WWW
« Ответ #4 : Октябрь 17, 2012, 11:56 »

Могу только посоветовать заменить физически nmake.exe на jom.exe

Скорость сборки уменьшиться с 40 минут до времени "одного перекура".
Записан

vregess
Гость
« Ответ #5 : Октябрь 17, 2012, 18:07 »

Разные, более того я это проверял "живьем": удалил все obj из debug каталога и запустил - debug каталог заполнился заново, а в release каталоге ничего не изменилось
А наоборот проверял?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Октябрь 17, 2012, 18:18 »

В общем прошелся по всем директориям в проекте и тупо установил "Debug" и "Release" для конфигураций соответственно. А то там имена были длинные и задроченные - хотя нигде не нашел чтобы неправильные. После этого - побычила  Улыбающийся Почему - хз, но работает как положено, переключаться могу. Ну конечно линкует задумчиво, но это минут 8 - не час!

Спасибо принявшим участие в обсуждении
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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