有没有就find_package()在CMake中的行为达成共识?

时间:2016-10-25 16:31:39

标签: cmake

通常find_package(foo)将定义

${FOO_FOUND}
${FOO_INCLUDE_DIRS} 
${FOO_LIBRARIES}

但CMake文档中仅提及${FOO_FOUND}。有些图书馆不遵守这一规则。比如Glog。

find_package()有两种模式。一种是模块模式,它使用FindFoo.cmake。另一种是配置模式,它使用foo-config.cmake

foo-config.cmake由foo的维护者提供,而FindFoo.cmake可能是由其他人编写的。我对吗 ?关于如何在开发人员之间定义变量是否达成共识?

"导入的目标"是CMake 2.6之后的新功能,它可以提供更好的查找库的方法。那么${FOO_INCLUDE_DIRS} ${FOO_LIBRARIES}的使用应该被视为传统方式吗?或者他们应该兼容兼容性?

我发现建议定义这三个变量的两个链接:

https://cmake.org/Wiki/CMake/Tutorials/How_to_create_a_ProjectConfig.cmake_file https://coderwall.com/p/qej45g/use-cmake-enabled-libraries-in-your-cmake-project-iii

1 个答案:

答案 0 :(得分:0)

对于配置文件和查找宏,没有真正强制的模式可以设置哪些变量。通常,每个作者都可以决定要定义哪些变量以及如何调用它们。对于提供的查找marcos,这些变量通常记录在cmake手册中,例如至于boost

我多年来看到的常见陷阱的一个例子是,有些包定义*_INCLUDE_DIRS,而其他包使用单数*_INCLUDE_DIR

所以,在我看来,你能做的最好的事情就是浏览cmake文档中提供的查找宏,并从那里得出de factor共识。