规范导出和使用 Config.cmake 文件

生成 Config.cmake 文件 生成 Config.cmake 文件路径要求与 pkg-config 一致 应该提供 FooConfig.cmake.in 使用 FULL 版本的 GNUInstallDirs 变量替换路径 相关修改: use configure_file set path in DdeDockConfig.cmake 使用 find_dependency 代替 find_package cmake 官方提供了 CMakeFindDependencyMacro 模块,专门用在 Config.cmake 文件中,find_dependency 和 find_package 用法完全相同,因此可以简单的把原来的 find_package 替换成 find_dependency。 find_dependency 的优点是如果 A 的 Config.cmake 寻找 B 的,如果失败 find_package 只会提示 B 的错误,而 find_dependency 还在报错中输出调用链,清晰显示是谁在找 B。 find_dependency 应该在 set 路径之后。 与 pkg-config 的 Requires 类似,这里只 find 传播的构建依赖。 使用 configure_package_config_file 代替 configure_file 使用 FULL 版本的 GNUInstallDirs 变量虽然正确,但还有一个缺陷,生成的是绝对路径,库必须安装到对应目录才可以。而 configure_package_config_file 可以自动计算相对的路径,适用性更广泛。
Read full post

规范导出和使用 pkg-config 文件

使用 pkg-config

pkg-config 是一个在源代码编译时查询已安装的库的使用接口的计算机工具软件。pkg-config原本是设计用于Linux的,但现在在各个版本的BSD、windows、Mac OS X和Solaris上都有着可用的版本。

它输出已安装的库的相关信息,包括:

  • C/C++编译器需要的输入参数
  • 链接器需要的输入参数
  • 已安装软件包的版本信息
Read full post

规范设置编译参数

CMake 中有许多关于编译器和链接器的设置。当你需要添加一些特殊的需求,你应该首先检查 CMake 是否支持这个需求,如果支持的话,你就可以不用关心编译器的版本,一切交给 CMake 来做即可。 更棒的是,你可以在 CMakeLists.txt 表明你的意图,而不是通过开启一系列标志 (flag) 。

Read full post