【问题标题】:Building Both x86 And x64 For Multiple Targets At Once With CMake Through CLion [duplicate]使用 CMake 通过 CLion 一次为多个目标构建 x86 和 x64 [重复]
【发布时间】:2019-10-30 14:16:21
【问题描述】:

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

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

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

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

【问题讨论】:

  • 感谢@squareskittles,我确实遇到了这个问题,但事后看来,这更像是一个特定于 CLion 的问题,而不是 CMake。我现在有这个工作,将发布一个答案供参考。

标签: cmake compilation clion


【解决方案1】:

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

总之;

  • 设置>构建、执行、部署>CMake;为您的目标及其架构变体(Win_x86_DEBUG/RELEASE、Win_x64_DEBUG/RELEASE 等)创建 CMake 配置文件
  • 如果使用 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”)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-13
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多