gpt4 book ai didi

Qt项目文件: Add libs depending on Kit

转载 作者:行者123 更新时间:2023-12-04 08:25:11 25 4
gpt4 key购买 nike

我有一个在 x86 linux 和嵌入式 ARM linux (yocto) 上运行的 QT 项目。
对于每个平台,我在 QtCreator 中定义了一个 Kit,引用了适当的编译器等。

现在我想将 LIBS 添加到我的 pro 文件中,但我在每个平台上都有不同的库。我没有找到一种方法来指定依赖于编译工具包的 LIBS 指令。

我搜索类似:

if (Kit == "Desktop")
LIBS += ...

if (Kit == "Embedded Yocto")
LIBS += ...

如何做到这一点?
先感谢您

最佳答案

我通过使用@vsz 在找到的评论中建议的答案来拼凑解决 OP 的问题 here .

我有两个工具包,一个用于本地桌面,一个用于 Target_ARM 设备,我想要一种无需专门修改 .pro 即可轻松构建这两个工具包的方法。文件或其他任何东西。我按照链接的答案并添加了以下内容:

  • 在我的桌面套件(用于调试和发布)中,我添加了 CONFIG+=Desktop作为附加 qmake qmake 中的参数构建步骤。
  • 对于 Target_ARM 套件,我添加了 CONFIG+=Target_ARM在同一个地方。

  • 现在,这就是事情从链接答案转移到 OP 问题的地方。我不只是想要 #define在我的代码中编辑了变量,我想改变 qmake 的行为根据所选套件。我不知道 CONFIG内置测试功能是否支持 block 指定(即 CONFIG { _several lines here_ } ),但事实证明我可以复制和粘贴 CONFIG在我想成为条件的每一行前面的测试函数;事实上我可以串多个 CONFIG s 在一起,像这样:
    CONFIG(Desktop, Desktop|Target_ARM):unix:!macx:CONFIG(debug, debug|release): LIBS += /path/to/Desktop/debug/lib
    else:CONFIG(Desktop, Desktop|Target_ARM):unix:!macx:CONFIG(release, debug|release): LIBS += /path/to/Destop/release/lib

    正如它所暗示的,上述语句将运行 qmake使用适当的 LIBS路径取决于我选择的套件和配置。 Desktop->debug将生成一个带有 /path/to/Desktop/debug/lib 的 Makefile其中 Desktop->release将生成一个带有 /path/to/Desktop/release/lib 的 Makefile .我对 Target_ARM 有类似的声明成套工具。以下是选择正确 INCLUDEPATH 的示例: 当 Target_ARM->release 时,两个测试都将评估为真。被选中。
    CONFIG(Target_ARM, Desktop|Target_ARM):CONFIG(release, debug|release): INCLUDEPATH += /include/path/for/Target_ARM/release

    总而言之,我用这个方法修改 LIBS, INCLUDEPATH, DEPENDPATH, and PRE_TARGETDEPS .根据我选择的工具包( DesktopTarget_ARM)和我选择的构建配置( buildrelease),我有 4 种可能的包含路径和库配置。设置完成后,无需修改 .pro文件,只需选择您的工具包,您的构建配置,运行 qmake ,然后重建。

    我不知道 CONFIG+=Desktop 在哪里(例如)数据被存储,但我猜在 .pro.user文件。所以如果有人拉你的 .pro来自 repo 的文件,他们可能必须以这种方式至少配置一次项目,但之后不需要(只要 .pro.user 文件仍然存在)。 QT 确实应该有一个简单的机制来做到这一点,特别是因为他们的卖点之一是多平台集成。如果有更好的方法可以做到这一点,我还没有在 SO 或 QT 文档中看到它。

    关于Qt项目文件: Add libs depending on Kit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24549612/

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