Есть несколькоуровневый проект на qmake'ке. требуется иметь ОБЩИЙ конфиг-файл между подпроектами.
Как это сделать?
Ex: MOC_DIR = ".moc" записать в одном месте(например qmake_general) и чтоб импортировалось во всю иерархию...
в qt3 было сделано так:
— есть qmake_general
— в самом верхнем проектке пишется:
...
ROOT_DIR=$$(PWD)
CONFIG_FILE=$$ROOT_DIR/qmake_general
QMAKE=/usr/qt/3/bin/qmake CONFIG_FILE=$$CONFIG_FILE ROOT_DIR=$$ROOT_DIR
...
Все просто — переменная QMAKE это то, что будет запущено во всех подкатологах(подпроектах),
в них лишь остается сделать include($$CONFIG_FILE)...
...в qt4 QMAKE хранит путь "/usr/bin/qmake" но при его изменении ничего не происходит......
устроит любой способ
ежели оффтоп — не бейте
21.01.10 12:42: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт
K13>а просто в подпроектах в .pro написать include($$(MY_ROOT_DIR)/qmake_general) и выставить переменную окружения MY_ROOT_DIR перед сборкой?
Хм — не удалось, ибо как выставлять переменную MY_ROOT_DIR перед сборкой? функуия system() запускается в отдельной сессии и на основную не влияет. Внешние скрипты не подходят — так как для сборки проекта надо пользовать "qmake;make" — тут места др. скриптам нету

...
неужели в qt4 нет способа передать переменную(ЛЮБУЮ) из верхнего проекта в нижний?!
_>Хм — не удалось, ибо как выставлять переменную MY_ROOT_DIR перед сборкой? функуия system() запускается в отдельной сессии и на основную не влияет. Внешние скрипты не подходят — так как для сборки проекта надо пользовать "qmake;make" — тут места др. скриптам нету
...
у меня qmake && (n)make завернуто в build.cmd / build.sh с выставлением нужных переменных.
сам скриптик лежит в общей ветке репозитария
часть переменных может быть уже задана снаружи (скриптик проверяет) -- например, при сборке на билд-сервере DESTDIR задается как artifacts dir текущего билда.
_>неужели в qt4 нет способа передать переменную(ЛЮБУЮ) из верхнего проекта в нижний?!
честно говоря, не интересовался. спроси в рассылке qt-interest@trolltech.com
S>Видел у троллей и использую такое:
S>include(../common_config.pri)
S>К сожалению, документации не нашел.
это да, но "../" это только один уровень наверх... а если у меня их N? хотя можно попробовать что-то типа:
system(cp -f ../common_config common_config)
include(common_config)
лол — щас попробуем