检查类型大小¶
检查类型的大小
- check_type_size¶
check_type_size(<type> <variable> [BUILTIN_TYPES_ONLY] [LANGUAGE <language>])
检查类型是否存在并确定其大小。结果在以下变量中报告:
有_<变量>保存一个 true 或 false 值,指示该类型是否存在。
<变量>持有以下值之一:
<尺寸>类型具有非零大小
<size>。0类型具有依赖于体系结构的大小。当
CMAKE_OSX_ARCHITECTURES具有多个架构时,可能会发生这种情况。在这种情况下,<variable>_CODE包含从每个架构宏到相应类型大小的 C 预处理器测试映射。架构宏列表存储在``<variable>_KEYS``中,每个键的值存储在``<variable>-<key>``中。- ""(空字符串)
类型不存在。
<变量>_CODE保留 C 预处理器代码以将宏“<variable>”定义为类型的大小,或者如果类型不存在则保留宏未定义。
选项是:
BUILTIN_TYPES_ONLY仅支持编译器内置类型。如果*未*给出,宏将检查标题``<sys/types.h>``、
<stdint.h>和``<stddef.h>``,并将结果保存在`` HAVE_SYS_TYPES_H``、HAVE_STDINT_H和``HAVE_STDDEF_H``。类型大小检查自动包含可用的标头,因此支持对标头中定义的类型进行检查。语言<语言>使用``<language>`` 编译器来执行检查。可接受的值为“C”和“CXX”。
不管宏的名称如何,您也可以使用它来检查更复杂的表达式的大小。检查例如对于结构成员的大小,您可以执行以下操作:
check_type_size("((struct something*)0)->member" SIZEOF_MEMBER)
在调用此宏以修改检查运行方式之前,可以设置以下变量:
CMAKE_REQUIRED_FLAGS编译命令行标志的字符串。
CMAKE_REQUIRED_DEFINITIONS要定义的宏列表 (-DFOO=bar)。
CMAKE_REQUIRED_INCLUDES包含目录列表。
CMAKE_REQUIRED_LINK_OPTIONS在 3.14 版本加入: 传递给链接命令的选项列表。
CMAKE_REQUIRED_LIBRARIES要链接的库列表。
CMAKE_REQUIRED_QUIET在 3.1 版本加入: 在没有消息的情况下安静地执行。
CMAKE_EXTRA_INCLUDE_FILES要包含的额外标题列表。