如何用CMake交叉编译qt应用
How to crosscompile qt applications with CMake
情况是:
Linux 主机上有针对不同平台编译的 qt 应用程序:Linux、Windows、Android(很快和 Mac)。我需要在 Linux 主机上为所有平台构建一个应用程序。
我使用了 qmake,那里的一切都非常简单,调用 qmake 并将 -spec
传递给它就足够了。 Qmake自己写了必要的变量路径,一切正常。
现在我正在切换到 CMake,但我在调用 CMake 时遇到了困难。如何为特定平台构建应用程序?
CMake在qmake中有没有类似"spec"的可能性?
或者我需要手动设置所有的变量(我无法实现这样的方法)?
qmake -spec
选项的 CMake 等效项本质上是要使用的 -G
(对于 "generator")命令行 option. This will tell CMake which generator。 CMake 生成器负责 生成 本机构建系统文件(例如 Unix Makefiles、Visual Studio 项目文件等),因此它是一个依赖于平台的设置。例如,
cmake -G "Unix Makefiles" ..
与 qmake 不同,在 qmake 中您可以指定 platform/compiler 信息的路径,您可以直接告诉 CMake 从支持的生成器列表中选择哪个生成器。 CMake documentation 方便地将支持的生成器列表分解为 命令行 和 IDE 组。如果您没有明确选择生成器,CMake 将使用基于当前平台的默认生成器。
CMake 还提供其他选项(可与 -G
一起使用)以进一步指定要与生成的构建系统一起使用的工具集 (-T
) 或平台 (-A
) .工具集和平台规范可以告诉构建系统选择哪个 specific 编译器或 SDK。例如,我们可以告诉 CMake 为具有 Win32
平台(架构)且 Visual Studio 2019 的应用程序准备构建环境使用此:
cmake -G "Visual Studio 16 2019" -A Win32 ..
或者我们可以通过指定以下内容将体系结构更改为 64 位:
cmake -G "Visual Studio 16 2019" -A x64 ..
我鼓励您阅读链接的文档,以了解有关如何控制 CMake 的构建系统和编译器选择设置的更多信息。
情况是:
Linux 主机上有针对不同平台编译的 qt 应用程序:Linux、Windows、Android(很快和 Mac)。我需要在 Linux 主机上为所有平台构建一个应用程序。
我使用了 qmake,那里的一切都非常简单,调用 qmake 并将 -spec
传递给它就足够了。 Qmake自己写了必要的变量路径,一切正常。
现在我正在切换到 CMake,但我在调用 CMake 时遇到了困难。如何为特定平台构建应用程序?
CMake在qmake中有没有类似"spec"的可能性?
或者我需要手动设置所有的变量(我无法实现这样的方法)?
qmake -spec
选项的 CMake 等效项本质上是要使用的 -G
(对于 "generator")命令行 option. This will tell CMake which generator。 CMake 生成器负责 生成 本机构建系统文件(例如 Unix Makefiles、Visual Studio 项目文件等),因此它是一个依赖于平台的设置。例如,
cmake -G "Unix Makefiles" ..
与 qmake 不同,在 qmake 中您可以指定 platform/compiler 信息的路径,您可以直接告诉 CMake 从支持的生成器列表中选择哪个生成器。 CMake documentation 方便地将支持的生成器列表分解为 命令行 和 IDE 组。如果您没有明确选择生成器,CMake 将使用基于当前平台的默认生成器。
CMake 还提供其他选项(可与 -G
一起使用)以进一步指定要与生成的构建系统一起使用的工具集 (-T
) 或平台 (-A
) .工具集和平台规范可以告诉构建系统选择哪个 specific 编译器或 SDK。例如,我们可以告诉 CMake 为具有 Win32
平台(架构)且 Visual Studio 2019 的应用程序准备构建环境使用此:
cmake -G "Visual Studio 16 2019" -A Win32 ..
或者我们可以通过指定以下内容将体系结构更改为 64 位:
cmake -G "Visual Studio 16 2019" -A x64 ..
我鼓励您阅读链接的文档,以了解有关如何控制 CMake 的构建系统和编译器选择设置的更多信息。