【发布时间】:2012-08-10 06:11:54
【问题描述】:
我已经进行了大量研究,但无法找到答案……如何使用 CMake 可靠地找到我正在编译的目标架构?基本上相当于qmake中的QMAKE_TARGET.arch。
大多数消息来源似乎建议使用 CMAKE_SYSTEM_PROCESSOR,但这是一个糟糕的解决方案,因为例如,无论您是为 i386、x86_64、ppc 还是 ppc64 编译,它都会在 OS X 上返回 i386。
同样,CMAKE_SIZEOF_VOID_P 给出了系统的指针大小,而不是目标。
我知道有 CMAKE_OSX_ARCHITECTURES,但如果未设置,它可能为空,在这种情况下,它似乎默认为系统能够执行的任何操作。那么如何找到目标架构信息呢?
特别是对于 OS X,我如何区分 32、64 和 Intel Universal?
【问题讨论】:
-
CMAKE_SIZEOF_VOID_P 为我提供了不同的大小,具体取决于我是使用 -G "Visual Studio 11 Win64" 还是仅使用 -G "Visual Studio 11" 生成的——我用它来确定目标。这是否与您的“CMAKE_SIZEOF_VOID_P 给出系统的指针大小,而不是目标”的断言相矛盾?我只在 Visual Studio 上测试过这个...
-
根据文档,
CMAKE_SYSTEM_PROCESSOR返回您正在编译的 CPU 的架构,而CMAKE_HOST_SYSTEM_PROCESSOR返回运行 CMake 的 CPU 架构。因此,即使您正在交叉编译,使用CMAKE_SYSTEM_PROCESSOR也应该是安全的。你发现不是这样吗?但它确实返回不一致的结果(例如 Windows 上的“AMD64”,Linux 上的“x86_64”)。
标签: architecture cmake build-process qmake