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

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

Страниц: 1 [2] 3 4   Вниз
  Печать  
Автор Тема: [Qt:4.2.3] Версия в exe  (Прочитано 38981 раз)
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #15 : Июнь 14, 2007, 11:24 »

Цитата: "Emc"

Да да да - именно это я и пытаюсь им объяснить


То что я привел оно работает у тебя? Подходит тебе такой вариант?

ЗЫ: У меня никаких проблем нет. Проверено на всех 3х платформах
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Emc
Гость
« Ответ #16 : Июнь 14, 2007, 11:31 »

ситуация в другом CONFIG(debug, debug|release) конечно работает - тут вопросов нет
просто люди утверждают что работает проверка "debug{}" - а я им не верю - вот и спорим по-тихоньку
Записан
AlexVR
Гость
« Ответ #17 : Июнь 14, 2007, 13:30 »

Цитата: "Emc"
ситуация в другом CONFIG(debug, debug|release) конечно работает - тут вопросов нет
просто люди утверждают что работает проверка "debug{}" - а я им не верю - вот и спорим по-тихоньку


Код:

TEMPLATE =   app
TARGET =   XXX
DESTDIR +=   bin
DEPENDPATH +=   . \
  qrc \
  src \
  tr \
  ui
CONFIG +=   qt \
  warn_on \
  windows \
  debug
QT +=   core \
  gui
HEADERS +=   src/XXX.h \
  src/YYY.h \
  src/ZZZ.h
FORMS +=   ui/XXX.ui \
  ui/YYY.ui \
  ui/ZZZ.ui
SOURCES +=   src/XXX.cpp \
  src/YYY.cpp \
  src/ZZZ.cpp
RESOURCES +=   qrc/XYZ.qrc
TRANSLATIONS +=   tr/TTT.ts
win32 {
  RC_FILE +=     qrc/.rc
}
UI_DIR +=   build/ui/
RCC_DIR +=   build/qrc/
debug {
  MOC_DIR +=     build/moc/debug/
  OBJECTS_DIR +=     build/obj/debug/
}
else {
  MOC_DIR +=     build/moc/release/
  OBJECTS_DIR +=     build/obj/release/
}


Код:

> qmake
> mingw32-make release
> mingw32-make debug


И главное все вполне хорошо работает с QDevelop. (за исключением трех строк в составе проекта Улыбающийся, но для чего и рекомендовал помещать условия в конец файла)
Я так использую, и меня всё вполне устраивает.
И в чём тут еще проблемы???
Записан
Steven_Orko
Гость
« Ответ #18 : Июнь 14, 2007, 13:48 »

Цитата: "Emc"

to Steven_Orko
твой пример работает по той же причине, что и предыдущий и твои условия также не на что не влияют. просто по счастливому стечению обстоятельств твои папки называются debug/release qmake это видит и начинает анализировать --- назови папки folder1/folder2 и всё лафа кончится - начнутся ошибки.
про жар и руки непонял =(


Ну, кстати, у меня и такой вариант работает... Изначально я все собирал в bin/Release и bin/Debug... Мне так было удобнее, а потом я поправил свой скрипт так, чтобы он создавал файл проекта, как я выше постил... Скрипт мой, я его тоже тут на форуме в теме про IDE для Qt постил... Мне надо было, чтобы все объектники собирались в соответсвующих папках Debug и Release, чтобы Slickedit-ом можно было бы отлаживать проект интерактивно...))))

Т.О. у меня работало и если поменять названия папок на другие...

Просто debug и release - это специальные строковые значения  CONFIG, которые распознает qmake... Вообще, если тебе так очень надо назвать конфигурацию по-своему, или добавить третью, четвертую и т.д., то в хелпе по qmake для Qt 3 и Qt 4, а тем более для последней есть целый раздел, как это можно сделать.... У qmake есть специальная функция, которая проверяет, содержит ли переменная определенной значение contains( variablename, value ) ))))

Запись
Код:
debug {
}

или же

Код:
win32 {

}

 - это обозначение определенной области видимости. Как и в языке, эта область должна быть определена где-то, чтобы выполнялось что-то... Соответственно, debug и release - это предопределенные области видимости...  Тоже самое относится и win32 и иже с ним... Т.е. если ты захочешь вдруг на Ubuntu попробовать область видимости ubuntu, у тебя это явно не сработает... но это можно обойти с помощью функции, что я раньше писал )))

P.S. Кто может, покритикуйте ))))))
Записан
Emc
Гость
« Ответ #19 : Июнь 14, 2007, 15:03 »

чорт - я уже устал
все последний пост больше отвечать не буду
Код:

CONFIG += qt release warn_on

SOURCES += src/main.cpp

debug {
message("folder 1")
OBJECTS_DIR = folder1
}
else {
message("folder 2")
OBJECTS_DIR = folder2
}

CONFIG(debug, debug|release) {
message ("correct place is folder 1")
}
else {
message ("correct place is folder 2")
}


запусти это и увидишь, что в ветку else ты не попадешь никогда - вся сборка только в folder1 -- то что у вас что то срабатывает - это не ваша заслуга,
а qmake 'а который анализирует пути и за вас распихивает файлы.

P.S. программный лог
Код:

Project MESSAGE: folder 1 //from debug{}  --- error
Project MESSAGE: correct place is folder 2  //from CONFIG  --- ok
Записан
AlexVR
Гость
« Ответ #20 : Июнь 14, 2007, 19:54 »

Вот теперь мене совсем снесло голову... :?
Мне более интересен вариант когда debug или release выбирается параметром make (make release, make debug), что довал ошибочный подход через debug{}, подход же через CONFIG(debug, debug|release) реагирует только через qmake.
:?: И как тогда правильно написать pro-файл?
Записан
fanat9
Гость
« Ответ #21 : Июнь 14, 2007, 20:06 »

Пробывал так, make debug и make release - вроде всё работает.

CONFIG += debug release qt warn_on

debug {
  DESTDIR     = debug
  OBJECTS_DIR = debug/obj
  MOC_DIR     = debug/obj
  RCC_DIR     = debug/obj
}

release {
  DESTDIR     = release
  OBJECTS_DIR = release/obj
  MOC_DIR     = release/obj
  RCC_DIR     = release/obj
}
Записан
QCasper
Гость
« Ответ #22 : Июнь 14, 2007, 21:25 »

Флуда то... ответьте на сабж кто-нить, пож., мне тоже интересно
Записан
fanat9
Гость
« Ответ #23 : Июнь 14, 2007, 21:37 »

Код:

VERSION = 1.00
TARGET = app-$${VERSION}


Это что ли ?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #24 : Июнь 15, 2007, 18:19 »

Ну наконец-то ответ!!! Я уже думал, что этот пост не закончится. Уже попробовал, все очень хорошо работает. Только теперь еще 2 вопроса по теме:
1. Как указать другие параметры - создатель, компания, имя продукта и пр.
2. Как в куте выловить из файла version-информацию, сегодня весь день в литературе прокопался. но не нашел.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
fanat9
Гость
« Ответ #25 : Июнь 15, 2007, 20:27 »

Вопрос на опережение: может быть сразу попробывать сделать  инсталлятор ?
Вот могу предложить хорошую штуку NSIS - http://nsis.sourceforge.net/Main_Page
Записан
AlexVR
Гость
« Ответ #26 : Июнь 16, 2007, 10:35 »

Цитата: "panter_dsd"
1. Как указать другие параметры - создатель, компания, имя продукта и пр.

А чем вариант через rc-файл не устраивает? Внём все и указывется.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #27 : Июнь 16, 2007, 14:44 »

Цитата: "AlexVR"
Цитата: "panter_dsd"
1. Как указать другие параметры - создатель, компания, имя продукта и пр.

А чем вариант через rc-файл не устраивает? Внём все и указывется.

А можно пример?

добавлено спустя 2 минуты:

 
Цитата: "fanat9"
Вопрос на опережение: может быть сразу попробывать сделать  инсталлятор ?
Вот могу предложить хорошую штуку NSIS - http://nsis.sourceforge.net/Main_Page

А зачем мне делать инсталятор? Версия должна быть вшита в прогу, а не в него.  Кстати, innosetup тоже хорошая вещь.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #28 : Июнь 16, 2007, 18:40 »

Цитата: "panter_dsd"
А можно пример?


Это содержимое файла ресерсов *.rc:

Код:
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1, 0, 0, 100
PRODUCTVERSION 1, 0, 0, 1
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x9L
#else
 FILEFLAGS 0x8L
#endif
 FILEOS 0x4L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
            VALUE "Comments", "Modified by BZCToOn's"
            VALUE "CompanyName", "Syntheretix"
            VALUE "FileDescription", "rcversion MFC Application"
            VALUE "FileVersion", "1, 0, 0, 100"
            VALUE "InternalName", "rcversion"
            VALUE "LegalCopyright", "Copyleft (C) Bzc ToOn'S 2002"
            VALUE "OriginalFilename", "rcversion.EXE"
            VALUE "PrivateBuild", "RCVERSION-20030212_100"
            VALUE "ProductName", "rcversion Application"
            VALUE "ProductVersion", "1, 0, 0, 1"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END


Как подключить его к проету, читаем выше
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #29 : Июнь 16, 2007, 18:56 »

Спасибо. А как потом вытащить эту информацию, например, в заголовок программы?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: 1 [2] 3 4   Вверх
  Печать  
 
Перейти в:  


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