QMAKE。如何在交叉编译QT项目时找出主机平台和目标平台

时间:2014-09-18 15:20:43

标签: qt arm cross-platform qmake qnx

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

显然使用:

win32 {}
unix {}
macx {}

不起作用,因为在不同的操作系统上它总是会报告unix,所以我认为这是目标平台 那么获取当前主机平台以使PRO文件具有灵活性的方法是什么,因为在不同的平台上我想做不同的事情。

谢谢

2 个答案:

答案 0 :(得分:5)

也许QMAKE_HOST变量是您问题的答案?

此处来自official Qt documentation的信息:

QMAKE_HOST

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

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

win32-g++:contains(QMAKE_HOST.arch, x86_64):{ message("Host is 64bit") ... }

答案 1 :(得分:3)

无法做得更好:

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})