我只想在 POSIX 系统上尝试构建源文件(为了这个问题,让我们忽略交叉构建)。我知道如何检查我使用的是 UNIX 系统;我知道如何检查头文件是否存在;但是 - 我如何检查完整的 POSIX 一致性?
备注:
CMAKE_HOST_SYSTEM_NAME
(假设你真的想要主机系统名称而不是目标系统名称(CMAKE_HOST_NAME
)):
运行 CMake 的操作系统的名称。
在具有 uname 命令的系统上,此变量设置为
的输出。 Linux、Windows 和 Darwin for macOS 是三大操作系统的价值所在。uname -s
Modules/CMakeDetermineSystem.cmake
中的文档注释以查看可能值的列表。
经过 POSIX 认证的知名操作系统列表非常短(https://en.wikipedia.org/wiki/POSIX#POSIX-certified)。在维基百科页面和中列出的那些
CMakeDetermineSystem.cmake
,我看到AIX
,HP-UX
,Darwin
(macOS),SCO_SV
(OpenServer 5),UnixWare
,
我在记录的可能值列表中没有看到 INTEGRITY、VxWorks 或 z/OS,但这可能只是文档中的一个失误,并不一定是它们不受支持。从https://en.wikipedia.org/wiki/Uname#Examples,我看到“z/OS USS”的
uname -s
给出了OS/390
。不过,该表没有关于 INTEGRITY 或 VxWare 的信息。
关于没有很多 POSIX 认证操作系统的观点:为什么大多数 Linux 发行版不兼容 POSIX?
像这样的东西:
set(POSIX_SYSTEM_NAMES "AIX;HP-UX;Darwin;SCO_SV;UnixWare;OS/360")
if(NOT ("${CMAKE_HOST_SYSTEM_NAME}" IN_LIST POSIX_SYSTEM_NAMES))
message(FATAL_ERROR "This system is not a fully POSIX compliant system")
endif()