2014-03-02 69 views
1

我正在创建另一个构建自动化工具,但我需要获取结局变量内容,因为它们位于由qmake生成的生成文件中,但不生成全部makefile ... 有没有一种方法(例如创建另一个模板,或查询qmake ...)来获取所有包含,链接等...?获取Qt项目所需的所有包含路径,lib等

(不管输出格式,我只是想在一个快速的方式路径)

PS:我已经尝试过对QMAKE变量使用消息(),但它出局空字符串

+0

看看[CMake](https://qt-project.org/quarterly/view/using_cmake_to_build_qt_projects)。它会让你更好地控制你的项目。 – yegorich

回答

3

你见过命令行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。

+0

它允许获取Qt的安装路径,我想我可以推导出每个模块的include和lib路径。 但我想要得到生成的生成文件的INCPATH而不生成它 –

+0

我编辑了我的答案,希望解决您提到的INCPATH要求。 – Sez

+0

顺便说一下,我做的感谢:) ,Qt有一个可爱的名称约定,可以很容易地从模块名称中检索includes和libs。只是为了管理Qt版本。 此外,还有pkg-config提供了有关我的脚本可以使用的库的有用信息。 如果您想查看我的脚本,请参阅https://gitorious.org/yabat/yabat/ –

相关问题