QMAKE. 如何在交叉编译QT项目时确定主机平台和目标平台

5

我正在为QNX、ARM编译,我的主机平台可以是Win32/64、Linux或Mac。我想找到一种方法在我的PRO文件中(构建项目的计算机上)查看我的主机平台。

显然可以使用:

win32 {}
unix {}
macx {}

由于在不同的操作系统上,它总是报告Unix,因此它无法正常工作。因此,我认为这是目标平台。那么,获取当前主机平台的方法是什么,以使PRO文件灵活,因为在不同的平台上,我想做不同的事情。

谢谢


这些是针对QNX/ARM的目标。您可以在配置Qmake中查看HOST变量。我不知道项目文件是否有像您为目标所示的主机操作系统的条件语法。例如,尝试message(Host: $$[QT_HOST_PREFIX])。顺便说一句,我猜测标签[tag:qt5]是相关的,或者您使用的是Qt4? - artless noise
当然是其中之一!我认为在我的情况下,$$[QMAKE_SPEC]会更好一些。 - xchg.ca
2个回答

8
也许QMAKE_HOST变量是你问题的答案?
以下是官方Qt文档提供的信息:

QMAKE_HOST

提供有关运行qmake的主机机器的信息。例如,您可以从QMAKE_HOST.arch中检索主机机器架构。

  • .arch - 主机架构
  • .os - 主机操作系统
  • .cpu_count - 可用CPU数量
  • .name - 主机计算机名称
  • .version - 主机操作系统版本号
  • .version_string - 主机操作系统版本字符串

win32-g++:contains(QMAKE_HOST.arch, x86_64):{ message("主机是64位") ... }


4

没有比这更好的了:

QMAKE_SPEC_T = $$[QMAKE_SPEC]

contains(QMAKE_SPEC_T,.*win32.*){
    HOST_PLATFORM=WIN
    IS_WIN = 1
}

contains(QMAKE_SPEC_T,.*macx.*){
    HOST_PLATFORM=MAC
    IS_MAC = 1
}

contains(QMAKE_SPEC_T,.*linux.*){
    HOST_PLATFORM=LINUX
    IS_LINUX = 1
}

然后可以在任何地方进行检查:

!isEmpty(IS_WIN):message($${HOST_PLATFORM})
!isEmpty(IS_MAC):message($${HOST_PLATFORM})
!isEmpty(IS_LINUX):message($${HOST_PLATFORM})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接