其中CPACK_PACKAGE_NAME默认为项目名称,CPACK_PACKAGE_VERSION默认为项目版本号,它们的默认值都是对应project命令所设置的值;但是如果没有指定版本号,则会是CMake的默认值。 假如: CPACK_OUTPUT_FILE_PREFIX设置为/usr/local/package; CPACK_INSTALL_PREFIX设置为RealCoolEngineer; CPACK_PACKAGE_FILE_NAME设置为CMa...
本质是通过一些特定的规则找到<package_name>Config.cmake包配置文件, 通过执行该配置文件,从而定义了一系列的变量,通过这些变量就可以准确定位到库的头文件和库文件,完成编译CMake提供了find_package()命令用来查找CMake本身不提供任何搜索库的便捷方法,所有搜索库并给变量复制的操作必须由CMake代码完成, 也就是目录...
该模式下,CMake会搜索<lowercasePackageName>-config.cmake文件或<PackageName>Config.cmake文件。如果find_package命令中指定了具体的版本,也会搜索<lowercasePackageName>-config-version.cmake或<PackageName>ConfigVersion.cmake文件,因此配置模式下通常会提供配置文件和版本文件(注意形式上要保持一致),并且作为包的一...
可以在命令行上用ros2 pkg create <package_name>生成基本的CMake软件包轮廓。这样在package.xml和CMakeLists.txt这两个文件就会有软件包的基本构建信息。package.xml文件中必须包含所有依赖项和一些元数据,以允许colcon为软件包找到正确的构建顺序、在CI中安装所需的依赖项以及提供带有Bloom的发行版信息。 CMakeLists...
一般来说,Find<PackageName>.cmake文件不是随包本身一起提供的,更多的是外部针对已有包的重新包装,例如操作系统、Cmake程序、甚至是调用find_package命令的工程针对已有的包提供针对该包的.cmake文件。 1.2 配置模式(Config mode) 该模式下,CMake会搜索<lowercasePackageName>-config.cmake文件或<Pa...
find_package的作用是在系统中查找指定的库,并将其包含路径和链接库信息传递给CMake。它通常用于查找第三方库,如Boost、OpenCV等。 find_package的使用方法如下: 代码语言:txt 复制 find_package(package_name [version] [EXACT] [QUIET] [MODULE] [REQUIRED] [COMPONENTS components...]) package_name:要查找的...
在Module模式,CMake查找Find<PackageName>.cmake文件,首先在CMAKE_MODULE_PATH中查找,然后再CMake安装所提供的模块中查找。 用户可以设置CMAKE_FIND_PACKAGE_PREFER_CONFIG变量为TRUE,让CMake优先使用Config模式。 详细的模块查找过程(翻译的官方文档) find_packge完成的参数列表 ...
首先,考虑目标库是否提供了针对CMake的配置文件。如果库作者提供了<PackageName>Config.cmake或<package-name>-config.cmake文件,那么使用配置模式通常是更好的选择。配置模式能够确保按照库作者的意图来使用库,从而最大程度上保证构建的准确性和稳定性。
前面介绍了find_package有两种搜索包的模式(参考find_package介绍),本篇文章介绍其中的一种:模块模式(Module Mode)。在这种模式下,当调用find_package命令查找<PackageName>包的时候,实际上会去查找一个名为Find<PackageName>.cmake的文件,这个文件的主要任务就是确定一个包是否可用,查找的结果会反映在变量<...
在该模式下, Cmake 会搜索一个名为 Find<PackageName>.cmake 的文件,其中 <PackageName> 为待搜索包的名称。 搜索路径的顺序依次是: 如果找到文件 Find<PackageName>.cmake , Cmake 会读取并处理该文件,简而言之,它负责检查一些条件(如...