首页 > 解决方案 > 使用 CMake 通过 CLion 一次为多个目标构建 x86 和 x64

问题描述

我正在 Windows 上构建一个跨平台库,目标是 Windows、Linux、Mac、Android 和 iOS。

由于几个不相关的原因,我最近切换到 CLion。使用 VS,我只需通过两个单独的配置为 Windows x86/x64 构建。

我现在正在尝试优化我的工作流程。我的目标是能够构建一次,并让 CLion 为所有目标平台输出 32 位和 64 位构建。

如果可能的话,我如何配置 CLion 以通过单独的工具链构建相同的项目,具有多种架构(即通过 MSVC 的 x86 和 x64、通过 WSL 的 x86 和 x64、ARM 的重定向等)?

标签: cmakecompilationclion

解决方案


我将其发布以供将来参考,以防它可以节省任何人的时间。这很简单,我只是不习惯 CLion 的处理方式,而且很难搜索细节。

简而言之;

  • 设置>构建、执行、部署>CMake;为您的目标及其架构变体创建 CMake 配置文件(Win_x86_DEBUG/RELEASE、Win_x64_DEBUG/RELEASE 等)
  • 如果使用 MSVC,请转到设置>构建、执行、部署>工具链并创建两个 Visual Studio 工具链。分配一个 x86 架构和另一个 x64(您也可以在此处指定 ARM 变体,尽管您可能不必阅读帖子的其余部分)。
  • 返回 CMake 配置文件并为每个配置文件分配适当的工具链。

我最初尝试通过 CMake 直接指定编译器选项(即 -G 生成器标志,以及平台细节,例如为 GCC 设置 -m32/64)。这适用于除 32 位 Windows 目标之外的所有内容。CLion 在 Windows 内部使用 NMAKE,它不接受选项公开的相同架构定义,这意味着(据我所知)CLion 正在使用的特定管道只能将架构标志发送到 CMake 进行生成,但它抛出,并且不会让您为 Win_x86 指定体系结构。我通过创建如上所述的多个工具链来解决这个问题。同样,原始方法在 Win_x64 上很好——我只是让 CMake 配置文件直接通过生成器(-G“Visual Studio 15 2017 Win64”)。

从那里您可以构建所有配置文件,允许您一次为多个平台和架构编译同一个项目。


推荐阅读