Qmake 中 win64 配置的标识符

发布于 2024-07-09 17:53:59 字数 420 浏览 8 评论 0原文

Qmake 项目文件中是否有“win64”标识符? Qt Qmake Advanced 文档没有提及除 unix / macx / win32 以外的内容。

到目前为止,我已经尝试使用:

win32:message("using win32")
win64:message("using win64")
amd64:message("using amd64")

结果始终是“使用 win32”。

我是否必须为 x32 和 x64 项目使用单独的项目文件,以便它们能够针对正确的库进行编译? 有没有其他方法来区分 32 位和 64 位环境?

Is there a "win64" identifier in Qmake project files? Qt Qmake advanced documentation does not mention other than unix / macx / win32.

So far I've tried using:

win32:message("using win32")
win64:message("using win64")
amd64:message("using amd64")

The result is always "using win32".

Must I use a separate project-file for x32 and x64 projects, so they would compile against correct libraries? Is there any other way to identify between 32-bit and 64-bit environments?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

止于盛夏 2024-07-16 17:53:59

我这样做

win32 {

    ## Windows common build here

    !contains(QMAKE_TARGET.arch, x86_64) {
        message("x86 build")

        ## Windows x86 (32bit) specific build here

    } else {
        message("x86_64 build")

        ## Windows x64 (64bit) specific build here

    }
}

I do it like this

win32 {

    ## Windows common build here

    !contains(QMAKE_TARGET.arch, x86_64) {
        message("x86 build")

        ## Windows x86 (32bit) specific build here

    } else {
        message("x86_64 build")

        ## Windows x64 (64bit) specific build here

    }
}
林空鹿饮溪 2024-07-16 17:53:59

从 Qt5 开始,您可以使用 QT_ARCH 来检测您的配置是 32 位还是 64 位。当目标是 32 位时,返回 i386,如果是 64 位目标,则返回 i386它的值为x86_64。 所以它可以像这样使用:

contains(QT_ARCH, i386) {
    message("32-bit")
} else {
    message("64-bit")
}

Since Qt5 you can use QT_ARCH to detect whether your configuration is 32 or 64. When the target is 32-bit, that returns i386 and in case of a 64-bit target it has the value of x86_64. So it can be used like:

contains(QT_ARCH, i386) {
    message("32-bit")
} else {
    message("64-bit")
}
万人眼中万个我 2024-07-16 17:53:59

更新:最近,Qt 有一种透明、轻松地完成此操作的方法,无需手动麻烦:

win32-g++:contains(QMAKE_HOST.arch, x86_64):{
    do something
}

来源:全新的 Qt 开发常见问题解答

UPDATE: since very recently, Qt has a way of doing this transparently and easily, without manual hassle:

win32-g++:contains(QMAKE_HOST.arch, x86_64):{
    do something
}

Source: the brand new Qt Dev FAQ

落在眉间の轻吻 2024-07-16 17:53:59

我已经想出了一种方法来做到这一点。

Qt 允许您传递任意配置参数,您可以使用这些参数来分隔目标。

通过在项目文件中添加条件配置:

CONFIG(myX64, myX64|myX32) {
    LIBPATH += C:\Coding\MSSDK60A\Lib\x64
} else {
    LIBPATH += C:\Coding\MSSDK60A\Lib
}

并将该自定义配置传递给 qmake 即可

qmake CONFIG+=myX64

获得所需的结果。

I've figured out one way to do it.

Qt allows you to pass arbitrary config parameters which you can use to separate the targets.

By having a conditional config in your project file:

CONFIG(myX64, myX64|myX32) {
    LIBPATH += C:\Coding\MSSDK60A\Lib\x64
} else {
    LIBPATH += C:\Coding\MSSDK60A\Lib
}

and passing that custom config to qmake with

qmake CONFIG+=myX64

you get the wanted result.

面犯桃花 2024-07-16 17:53:59

不,但是你可以创建并使用一个新的 mkspec,我认为 qmake 还定义了一个以当前 mkspec 命名的平台标识符。 为什么需要测试 64 位?

芦苇

No, but you can create and use a new mkspec, I think qmake also defines a platform identifier named after the current mkspec. Why do you need to test for 64 bit?

Reed

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文