【问题标题】:QMAKE. How to figure out host platform and target platform when cross compiling QT projectsQMAKE。交叉编译QT项目时如何确定宿主平台和目标平台
【发布时间】:2014-09-18 15:20:43
【问题描述】:

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

显然使用:

win32 {}
unix {}
macx {}

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

谢谢

【问题讨论】:

  • 这些是针对目标的,即 QNX/ARM。您可以查看configuring Qmake 中的HOST 变量。我不知道项目文件是否具有主机操作系统的条件语法,就像您为目标显示的那样。例如尝试message(Host: $$[QT_HOST_PREFIX])。顺便说一句,我猜标签 qt5 是相关的还是你在 Qt4 上?
  • 当然是选项之一!我认为 $$[QMAKE_SPEC] 在我的情况下会好一些。

标签: qt arm cross-platform qmake qnx


【解决方案1】:

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

这是来自official Qt documentation的信息:

QMAKE_HOST

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

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

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

【讨论】:

    【解决方案2】:

    没有比这更好的了:

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

    【讨论】:

      猜你喜欢
      • 2019-07-22
      • 2011-01-21
      • 2014-04-07
      • 2018-04-11
      • 1970-01-01
      • 2016-09-22
      • 2019-09-27
      • 2011-08-24
      • 2010-10-06
      相关资源
      最近更新 更多