CMAKE_SYSTEM_PROCESSOR 的可能值是什么?

ein*_*ica 8 cmake

在 CMake 中, 的可能值有哪些CMAKE_SYSTEM_PROCESSOR?至少,AMD、英特尔、苹果、高通等常见处理器系列的值是多少?

我在CMake 文档中找不到此信息。

Ale*_*ing 11

根据文档,“当不交叉编译时,该变量与CMAKE_HOST_SYSTEM_PROCESSOR变量具有相同的值”。在前一种情况下,变量是由工具链文件设置的,我认为这是您感兴趣的事情。

在后一种情况下,文档称这CMAKE_HOST_SYSTEM_PROCESSOR是通过按以下方式检查环境来确定的:

  • PROCESSOR_ARCHITECTURE在 Windows 上,使用环境变量 的值。
  • uname -m在 macOS 上,默认使用 的值。但是,由于这可能会根据您使用的是 x86 还是 ARM CMake 而有所不同,因此版本 3.19.2+ 将使用CMAKE_APPLE_SILICON_PROCESSOR(CMake 或环境变量)的值(如果已设置)。它还标准化Power Macintoshpowerpc.
    • 据我所知,这里可能的值是x86_64arm64powerpc
  • 在 OpenBSD 上,它使用该arch -s命令。
    • 不确定这里的完整列表是什么。不幸的是,手册页对此没有任何说明。
  • 在 Linux 和相关系统(Cygwin、MSYS、Android、GNU)上,它使用uname -m
  • 否则,它会首先查找uname命令并尝试uname -p。如果它返回非零退出状态,它将诉诸uname -m
    • 不知道这可能是什么。

但真正重要的是 CMake 将如何利用CMAKE_SYSTEM_PROCESSOR. 以下是我所知道的功能:

  • CPACK_SYSTEM_NAME的默认值为${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}
  • 所有语言模块Modules/CMake<LANG>Information.cmake都可以选择包含带有后缀的平台模块-${CMAKE_SYSTEM_PROCESSOR}.cmake
    • 在大多数情况下,不存在这样的模块。在 Android 上,许多平台模块都具有特定于处理器的变体。
  • FindJNI 模块使用它来指导搜索
  • --mcpu它通过(编译)和--cpu(链接)传递给ARMClang