我正在創建另一個構建自動化工具,但我需要獲取結局變量內容,因爲它們位於由qmake生成的生成文件中,但不生成全部makefile ... 有沒有一種方法(例如創建另一個模板,或查詢qmake ...)來獲取所有包含,鏈接等...?獲取Qt項目所需的所有包含路徑,lib等
(不管輸出格式,我只是想在一個快速的方式路徑)
PS:我已經嘗試過對QMAKE變量使用消息(),但它出局空字符串
我正在創建另一個構建自動化工具,但我需要獲取結局變量內容,因爲它們位於由qmake生成的生成文件中,但不生成全部makefile ... 有沒有一種方法(例如創建另一個模板,或查詢qmake ...)來獲取所有包含,鏈接等...?獲取Qt項目所需的所有包含路徑,lib等
(不管輸出格式,我只是想在一個快速的方式路徑)
PS:我已經嘗試過對QMAKE變量使用消息(),但它出局空字符串
你見過命令行qmake -query
...的輸出嗎?
在我的系統它給(除去大部分的輸出清晰度):
~ sez$ env PATH=$HOME/build/qt5/qtbase/bin qmake -query
QT_SYSROOT:
QT_INSTALL_PREFIX:/usr/local/Qt-5.2.0
QT_INSTALL_DATA:/usr/local/Qt-5.2.0
QT_INSTALL_HEADERS:/usr/local/Qt-5.2.0/include
QT_INSTALL_LIBS:/usr/local/Qt-5.2.0/lib
QMAKE_SPEC:macx-clang
QMAKE_VERSION:3.0
QT_VERSION:5.2.0
它在早期版本更簡潔。你可以像這樣查詢單個變量:
~ sez$ env PATH=$HOME/build/qt5/qtbase/bin qmake -query QT_INSTALL_HEADERS
/usr/local/Qt-5.2.0/include
這樣做你需要什麼?請注意,在構建Qt時,它會報告安裝文件的位置爲make install
。這意味着如果你已經構建了Qt,但沒有運行「make install」,qmake -query的結果不會給你一個有用的答案。
如果您已經從源代碼構建並希望使用該構建目錄,那麼您需要運行./configure -prefix=$PWD
,然後運行make install
。
編輯:
對於生成的Makefile我QMAKE之一,我有 -
INCPATH = -I在/ usr /本地/ QT-5.2.0/mkspecs/MACX-鐺-I /用戶/ sez/depot/plistinator/src -I/usr/local/Qt-5.2.0/lib/QtWidgets.framework/Versions/5/Headers -I/usr/local/Qt-5.2.0/lib/QtXml.framework/Versions/5/Headers -I/usr/local/Qt-5.2.0/lib/QtGui.framework/Versions/5/Headers -I/usr/local/Qt-5.2.0/lib/QtCore.framework/Versions/5/Headers -I。 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers -I/Applications/Xcode .app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers -I。 -一世。 -F在/ usr /本地/ QT-5.2.0/lib目錄上的Qt模塊已經例如指定
這取決於
QT += widgets xml
鑑於信息,你可以使用任何環境中,你重建上述INCPATH 「再在自動化,例如,對於一個bash shell的表達部分可能是
XML_INC=$(qmake -query QT_INSTALL_LIBS)/QtXml.framework/Versions/5/Headers
要獲得mkspecs包括你可以做
MKSPEC_INC=$(qmake -query QT_INSTALL_PREFIX)/mkspecs/$(qmake -query QMAKE_SPEC)
對於SDK中的GL路徑,這些將始終包含在Qt中,因此您可以通過從gcc -v
捕獲輸出來構建它們。
然後將所有這些* _INC變量結合到最終結果中。
爲此完成一個完整的腳本超出了這個答案的範圍,但我認爲這種方法會讓你在那裏。我想不到一個更簡單的方法來做你想做的事情,而不需要實際生成Makefile。
它允許獲取Qt的安裝路徑,我想我可以推導出每個模塊的include和lib路徑。 但我想要得到生成的生成文件的INCPATH而不生成它 –
我編輯了我的答案,希望解決您提到的INCPATH要求。 – Sez
順便說一下,我做的感謝:) ,Qt有一個可愛的名稱約定,可以很容易地從模塊名稱中檢索includes和libs。只是爲了管理Qt版本。 此外,還有pkg-config提供了有關我的腳本可以使用的庫的有用信息。 如果您想查看我的腳本,請參閱https://gitorious.org/yabat/yabat/ –
看看[CMake](https://qt-project.org/quarterly/view/using_cmake_to_build_qt_projects)。它會讓你更好地控制你的項目。 – yegorich