【问题标题】:why specifying architecture needs to be done in cmake for multi-configuration generators为什么需要在 cmake 中为多配置生成器指定架构
【发布时间】:2016-09-09 09:14:13
【问题描述】:

我了解CMAKE_BUILD_TYPE 仅适用于像 Unix Makefiles 这样的单一配置生成器。还有像 Visual Studio 或 Xcode 这样的多配置生成器,CMAKE_BUILD_TYPE 不起作用。 (有关更多信息,请参阅thisthis 问题)。我已经为libharu 生成了带有 cmake-gui 的 Visual Studio 2013 x86 项目,并且在 Visual Studio 中无法从 win32 切换到 x64。我想知道为什么在多配置中需要在 cmake 中指定架构(x86 或 x64)?为什么不能直接在 Visual Studio 中使用?是否有一些限制或好处或我应该注意的事情?

谢谢

【问题讨论】:

  • 这是一个 cmake 限制,也是一种故意的。请参阅此处:stackoverflow.com/questions/5334095/… 提到 cmake 需要每个编译器不同的构建目录,并且 32 位和 64 位编译被视为具有不同的编译器/编译器环境。 cmake 还鼓励外源构建,因此您无法在具有该理念的 VS 中统一 64 和 32。
  • @Hayt 感谢您的回复,请将其发布为答案,我会接受。

标签: cmake cpu-architecture cmake-gui multi-configuration


【解决方案1】:

因为 32 位和 64 位之间的这种切换并非在所有环境中都可用,所以 cmake 遵循使用源外构建并将每个编译器放在自己的目录中的理念。因此 32 位和 64 位构建可以看作是不同的编译环境,因此它们各自生成自己的文件夹。

因此,虽然这是一个 cmake 限制,但它也是有意为之的。

这个答案也提到了这一点:https://stackoverflow.com/a/5359191/152359

【讨论】:

    猜你喜欢
    • 2017-06-01
    • 1970-01-01
    • 2018-03-16
    • 2017-11-18
    • 2023-03-03
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多