Если посмотреть как утилита qmake генерирует Make файлы, то с самого начала в INCPATH после пользовательских хидеров попадают пути к Qt хидерам. т.е.
INCPATH = -I сперв пользовтальские потом Qt-шные... -I"C:\Qt\qt_minGW32_520\qtbase\include" -I"C:\Qt\qt_minGW32_520\qtbase\include\QtPrintSupport" и т.д.
У меня при сборке в qmake описан custom pre-build step, и мне там нужны эти пути.
Но если просто использовать эту переменную $$(INCPATH) или даже вывести ее message($$INCPATH) то это будет аналогично использованию INCLUDEPATH т.е. она будет содержать только пользовательские пути к хидерам.
Есть ли способ получить Qt-шные?
Re: Путь к Qt хидерам [qmake]
От:
Аноним
Дата:
10.02.14 23:29
Оценка:
Здравствуйте, nen777w, Вы писали:
N>Если посмотреть как утилита qmake генерирует Make файлы, то с самого начала в INCPATH после пользовательских хидеров попадают пути к Qt хидерам. т.е. N>
N>INCPATH = -I сперв пользовтальские потом Qt-шные... -I"C:\Qt\qt_minGW32_520\qtbase\include" -I"C:\Qt\qt_minGW32_520\qtbase\include\QtPrintSupport" и т.д.
N>У меня при сборке в qmake описан custom pre-build step, и мне там нужны эти пути. N>Но если просто использовать эту переменную $$(INCPATH) или даже вывести ее message($$INCPATH) то это будет аналогично использованию INCLUDEPATH т.е. она будет содержать только пользовательские пути к хидерам.
N>Есть ли способ получить Qt-шные?
N>>Есть ли способ получить Qt-шные?
А>- $$QMAKE_INCDIR А>- $$system(qmake -query QT_INSTALL_HEADERS)
message($$QMAKE_INCDIR) — ничего не выводит
message($$system(qmake -query QT_INSTALL_HEADERS)) — выводит только это C:/Qt/qt_minGW32_520/qtbase/include
Re[3]: Путь к Qt хидерам [qmake]
От:
Аноним
Дата:
11.02.14 07:57
Оценка:
Здравствуйте, nen777w, Вы писали:
N>>>Есть ли способ получить Qt-шные?
А>>- $$QMAKE_INCDIR А>>- $$system(qmake -query QT_INSTALL_HEADERS)
N>message($$QMAKE_INCDIR) — ничего не выводит N>message($$system(qmake -query QT_INSTALL_HEADERS)) — выводит только это C:/Qt/qt_minGW32_520/qtbase/include
попробуй сделай "qmake -d" и посмотри, в какой момент изменяется INCPATH и что туда прибавляют и из какой переменной
Здравствуйте, nen777w, Вы писали:
N>>>Есть ли способ получить Qt-шные?
А>>- $$QMAKE_INCDIR А>>- $$system(qmake -query QT_INSTALL_HEADERS)
N>message($$QMAKE_INCDIR) — ничего не выводит N>message($$system(qmake -query QT_INSTALL_HEADERS)) — выводит только это C:/Qt/qt_minGW32_520/qtbase/include
Подкаталоги Qt'шка сама уже добавляет на основе подключенных модулей.
Если необходимо получать полный путь для конкретного модуля QT могу предложить следующее решение:
defineReplace(get_sub_folder_by_qt_module) {
arg1=$${1}
#Допускаю что тут можно как то все в перебор списка завернуть, но у меня чет не вышло.
core=QtCore
gui=QtGui
xml=QtXml
isEqual(arg1, core) return($${core})
isEqual(arg1, gui) return($${gui})
isEqual(arg1, xml) return($${xml})
error(Folder for the module $${arg1} is not defined)
}
defineReplace(get_path_include_by_qt_module) {
return($$[QT_INSTALL_HEADERS]/$$get_sub_folder_by_qt_module($${1}))
}
message(--------------------------)
message(Modules folder names:)
for(module, QT) message($${module} = $$get_sub_folder_by_qt_module($${module}))
message(--------------------------)
message(Modules headers paths:)
for(module, QT) message($${module} = $$get_path_include_by_qt_module($${module}))
message(--------------------------)
Еще ожно небольшое обновление:
— добавил единую функцию для получение все путей
— значения из переменной QT выбираются как уникальные. ХЗ почему, но при уникальных значениях описанных выше по файлу, некоторые их них почему-то все же дублируются
defineReplace(get_sub_folder_by_qt_module) {
arg1=$${1}
for(sub, $$list(Core Gui Xml Network Widgets PrintSupport)) {
isEqual(arg1, $$lower($$sub)) {
return(Qt$$sub)
}
}
error(Folder for the module $${arg1} is not defined)
}
defineReplace(get_path_include_by_qt_module) {
return($$[QT_INSTALL_HEADERS]/$$get_sub_folder_by_qt_module($${1}))
}
defineReplace(get_all_qt_path) {
QT_modules = $$unique(QT)
result=
for(module, QT_modules) result += $$get_path_include_by_qt_module($${module})
return($$result)
}
Здравствуйте, nen777w, Вы писали:
N>Еще ожно небольшое обновление: N> — добавил единую функцию для получение все путей N> — значения из переменной QT выбираются как уникальные. ХЗ почему, но при уникальных значениях описанных выше по файлу, некоторые их них почему-то все же дублируются
N>defineReplace(get_sub_folder_by_qt_module) {
N> arg1=$${1}
N> for(sub, $$list(Core Gui Xml Network Widgets PrintSupport)) {
N> isEqual(arg1, $$lower($$sub)) {
N> return(Qt$$sub)
N> }
N> }
N> error(Folder for the module $${arg1} is not defined)
N>}
N>defineReplace(get_path_include_by_qt_module) {
N> return($$[QT_INSTALL_HEADERS]/$$get_sub_folder_by_qt_module($${1}))
N>}
N>defineReplace(get_all_qt_path) {
N> QT_modules = $$unique(QT)
N> result=
N> for(module, QT_modules) result += $$get_path_include_by_qt_module($${module})
N> return($$result)
N>}
N>
N>Пока буду использовать этот вариант, но ИМХО как то должно быть проще.