【问题标题】:How to crosscompile qt applications with CMake如何使用 CMake 交叉编译 qt 应用程序
【发布时间】:2020-02-01 22:29:04
【问题描述】:

情况是:

在 Linux 主机上有一个针对不同平台的编译 qt 应用程序:Linux、Windows、Android(很快和 Mac)。我需要在 Linux 主机上为所有平台构建应用程序。

我使用了 qmake,那里的一切都非常简单,调用 qmake 并将-spec 传递给它就足够了。 Qmake 自己编写了变量的必要路径,一切正常。

现在我正在切换到 CMake,但在调用 CMake 时遇到了困难。如何为特定平台构建应用程序?

  • CMake 是否有类似于 qmake 中的“spec”的可能性?

  • 或者我需要手动设置所有变量(我无法实现这样的方法)?

【问题讨论】:

    标签: c++ qt cmake cross-platform cross-compiling


    【解决方案1】:

    qmake -spec 选项的 CMake 等效项本质上是 -G(用于“生成器”)命令行 option。这将告诉 CMake 使用哪个 generator。 CMake 生成器负责生成本机构建系统文件(例如 Unix Makefile、Visual Studio 项目文件等),因此它是一个依赖于平台的设置。例如,

    cmake -G "Unix Makefiles" ..
    

    与指定平台/编译器信息路径的 qmake 不同,您可以直接告诉 CMake 从支持的生成器列表中选择哪个生成器。 CMake documentation 方便地将支持的生成器列表分解为 命令行IDE 组。如果您没有明确选择生成器,CMake 将使用基于当前平台的默认生成器。

    CMake 还提供了其他选项(可与 -G 一起使用)以进一步指定与生成的构建系统一起使用的工具集 (-T) 或平台 (-A)。工具集和平台规范可以告诉构建系统选择哪个特定编译器或 SDK。例如,我们可以告诉 CMake 使用 Visual Studio 2019 为具有 Win32 平台(架构)的应用程序准备构建环境:

    cmake -G "Visual Studio 16 2019" -A Win32 ..
    

    或者我们可以通过指定这个来将架构更改为 64 位:

    cmake -G "Visual Studio 16 2019" -A x64 ..
    

    我鼓励您通读链接文档,以了解有关如何控制 CMake 的构建系统和编译器选择设置的更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-15
      • 1970-01-01
      • 2012-10-02
      • 2017-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多