QMake - 根据工具包/目标以及构建类型查找库名称

问题描述 投票:0回答:1

我试图链接所有在同一目录中的库并使用以下命名约定:

libFoo64.a           # 64-bit release
libFoo32.a           # 32-bit release
libFood64.a          # 64-bit debug
libFood32.a          # 32-bit debug

我可以在QMake .pro文件中放入什么,以便为每个构建找到正确的库?

我正在使用QtCreator 4.9.0(MSYS2 build)并启用了默认套件:

  • 桌面Qt MinGW-w64 32位(MSYS2)
  • 桌面Qt MinGW-w64 64位(MSYS2)

对于32位调试版本,我将选择32位套件,然后选择下面的版本配置等。

我看到this question表示如何为Debug vs. Release设置不同的QMake选项,但我不知道如何扩展它以使用不同的选项,具体取决于使用的Kit。

qt-creator qmake
1个回答
0
投票

基于this question,我使用.pro文件中的以下代码成功实现了目标:

contains(QT_ARCH, i386) {
    CONFIG(debug, debug|release) {
        message("32-bit debug")
        LIBS += -lFooBard32 -lFooBazd32 -lFooQuxd32 -lFooCorged32 -lFooGraultd32
    }else {
        message("32-bit release")
        LIBS += -lFooBar32 -lFooBaz32 -lFooQux32 -lFooCorge32 -lFooGrault32
    }
}else {
    CONFIG(debug, debug|release) {
        message("64-bit debug")
        LIBS += -lFooBard64 -lFooBazd64 -lFooQuxd64 -lFooCorged64 -lFooGraultd64
    }else {
        message("64-bit release")
        LIBS += -lFooBar64 -lFooBaz64 -lFooQux64 -lFooCorge64 -lFooGrault64
    }
}

虽然它不是特别漂亮,但它有效。

我还必须修改我的套件配置,以便32位编译器启用32位QT(即使我正在使用非QT应用程序,我只是使用QtCreator,因为我喜欢IDE,我以前没有甚至安装了32位QT)。 QT_ARCH变量似乎基于套件中配置的“Qt版本”,而不是套件中选择的实际编译器。

© www.soinside.com 2019 - 2024. All rights reserved.