模块¶
使用模块¶
在软件开发中,代码重用是一种有价值的技术,而 CMake 旨在支持它。允许 CMakeLists 文件使用可重用的模块,使整个社区能够共享可重用的代码部分。对于 CMake,这些部分称为 cmake-modules
,可以在安装的 Modules 子目录中找到它们。
模块的位置可以使用模块文件的完整路径指定,也可以让 CMake 自己查找模块。CMake 将在 CMAKE_MODULE_PATH
指定的目录中查找模块;如果无法在该目录中找到模块,它将在 Modules 子目录中查找。通过这种方式,项目可以覆盖 CMake 提供的模块并根据自己的需要自定义它们。模块可以细分为几个主要类别
查找模块¶
这些模块支持 find_package
命令来确定软件元素(例如标题文件或库)的位置,这些元素属于给定的包。不要直接包含它们。使用 find_package
命令。每个模块都附有文档,描述它找到的包和它提供结果的变量。
实用程序模块¶
实用程序模块只是将 CMake 命令的部分放入一个文件中;然后可以使用 include
命令将它们包含到其他 CMakeLists 文件中。例如,以下命令将从 CMake 中包含 CheckTypeSize
模块,然后使用它定义的宏。
include(CheckTypeSize)
check_type_size(long SIZEOF_LONG)
这些模块测试系统,以提供有关目标平台或编译器的信息,比如 float 的大小或对 ANSI C++ 流的支持。其中许多模块的名称前缀为 Test
或 Check
,比如 TestBigEndian
和 CheckTypeSize
。有些模块试图编译代码以确定正确的结果。在这种情况下,源代码的命名通常与模块相同,但 .c
或 .cxx
扩展名不同。 实用程序模块还提供以 CMake 语言实现的有用宏和函数,主要针对特定的、常见的用例。有关详细信息,请参阅每个模块的文档。