gpt4 book ai didi

c++ - 获取一个Qt项目需要的所有include路径、lib等

转载 作者:行者123 更新时间:2023-11-30 02:48:15 39 4
gpt4 key购买 nike

我正在创建另一个构建自动化工具,但我需要获取最终变量内容,因为它们在 qmake 生成的 makefile 中,但不生成所有 makefile...有没有办法(例如,通过创建另一个模板,或查询 qmake...)获取所有包含、链接等...?

(无论输出格式如何,我只想要快速的路径)

PS:我已经尝试在 qmake 变量上使用 message(),但它输出空字符串

最佳答案

你看过命令行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 的结果将不会为您提供有用的答案。

如果您已经从源代码构建并且想要使用构建目录之外的 then,那么您需要运行 ./configure -prefix=$PWD,然后 make install

编辑:

对于我的 qmake 生成的 Makefile 之一,我有 -

INCPATH = -I/usr/local/Qt-5.2.0/mkspecs/macx-clang -I/Users/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/local/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。

关于c++ - 获取一个Qt项目需要的所有include路径、lib等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22126580/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com