cmake - 使用 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 的重定向等)?
解决方案
我将其发布以供将来参考,以防它可以节省任何人的时间。这很简单,我只是不习惯 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”)。
从那里您可以构建所有配置文件,允许您一次为多个平台和架构编译同一个项目。
推荐阅读
- c++ - C ++ system()函数未运行所有wimdows程序
- python - 我可以将图像列表传递给 ffmpeg-python 的输入法吗
- flutter - 在 Flutter 应用中使用多个提供程序
- data-mining - 如何将我的模型应用于 WEKA 中的新数据集?
- php - 如何让 PHP 停止将 NULL 值识别为数组中的元素?
- r - 如何更改两个重复行中的值以使行变得唯一
- c++ - 我是否用这个 strcpy_s 覆盖了不安全的数据?
- c# - 通过 github 操作将 .net 5 + .net 框架解决方案发布到 azure
- android - Android Studio 为什么标题不起作用?
- reactjs - Firebase在重新加载后登录用户