include(GNUInstallDirs)
GNUInstallDirs是一个cmake模块----就是一个.cmake文件。
GNU标准
GNUInstallDirs作用
在 CMake 中,GNUInstallDirs 模块提供了一组变量,这些变量表示了标准的 GNU 安装目录。这些变量包括 CMAKE_INSTALL_PREFIX(安装的根目录)、CMAKE_INSTALL_BINDIR(可执行文件目录)、CMAKE_INSTALL_LIBDIR(库文件目录)等等。
使用 include(GNUInstallDirs) 会自动设置这些变量,使得在不同系统上能够使用相同的 CMakeLists.txt 文件,并且符合 GNU 标准。这样,你可以在你的项目中使用这些变量,而不用硬编码目录路径,从而提高了你的项目的可移植性。
include的作用
用于寻找一个.cmake文件(模块),然后将这个.cmake模块中的内容插入这个CMakeLIsts.txt文件中。
同c++的#include一样,寻找需要指定寻找的路径,找到之后,再将找到的文件的内容加载到当前文件。
使用
指定路径
通过cmake的那些路径变量(eg:CMAKE_SOURDE_DIR)指定.cmake模块的文件路径即可;
或者定义一个路径变量,然后使用路径变量指定:
set(cmake_path "${CMAKE_SOURCE_DIR}/cmake")
include("${cmake_path}/test.cmake")
find_package和include
find_package也是用于寻找.cmake模块的,和include有啥区别?
寻找的.cmake文件格式
find_package不仅可以用于查找xxx-config.cmake,xxxConfig.cmake文件,还可以用于查找Findxxx.cmake文件。
find查找的模块文件或者配置文件文件格式是固定的:
模块文件一定要是:FindPackage_name.cmake;
配置文件一定要是:package_nameConfig.cmake/package_name-config.cmake;
而include可以是package_name.cmake,FIndPackage_name.cmake,(也可以是package_nameConfig.cmake/package_name-config.cmake。--待验证)
是否有包相关的变量
include只会将找到的包的内容插入到使用include的地方,不会像find_packe一样设置变量。
要使用变量,除非被include 的.cmake文件中有定义。