首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >KitWare的在CMake中查找库的指南中有哪些不推荐使用的内容?

KitWare的在CMake中查找库的指南中有哪些不推荐使用的内容?
EN

Stack Overflow用户
提问于 2018-02-26 22:32:46
回答 2查看 197关注 0票数 4

我需要编写一个CMake FindXYZ类型的模块。在谷歌上,我找到了这个指南:

https://cmake.org/Wiki/CMake:How_To_Find_Libraries

来自Kitware,但有一份关于它被弃用的免责声明。在过去的6-7年里,这些模块的编写方式发生了哪些重大变化?

EN

回答 2

Stack Overflow用户

发布于 2018-02-27 04:28:29

是的,CMake的内容现在正式移到了CMake的文档中,所以“不推荐使用”的警告更多地是一个一般性的警告,即维基不再受到照顾。

在您的案例中,CMake Wiki: How To Find Libraries的主要部分移到了CMake的documentation cmake-packages章节。

发生了什么变化?

我认为过去几年的主要变化是斯蒂芬·凯利在他的"Embracing Modern CMake"演讲中所说的:

现代CMake包定义了IMPORTED目标

Find_package(需要Foo) add_executable(hello main.cpp)核心(hello Foo::target_link_libraries)

在CMake的documentation cmake-developer - Find Modules章节中可以找到相同的基本色调:

传统方法是将变量用于所有内容,包括库和可执行文件。这就是CMake提供的大多数现有的查找模块所做的事情。

更现代的方法是通过提供导入的目标,尽可能地表现出配置文件包文件的行为。这具有将可传递的使用需求传播给消费者的优点。

详细信息

您可以将这种“现代方法”看作是前面方法的扩展(就像在"FindZLIB: Add imported target and documentation" commit中一样)。

肯定应该有的(多年来所有“查找模块”的核心)是find_package_handle_standard_args() macro。此宏是围绕..._FOUND缓存变量处理构建的。

我的建议是专注于导入的目标,而..._INCLUDE_DIRS..._LIBRARIES变量只是必须在某个地方缓存查找结果的副作用。

票数 4
EN

Stack Overflow用户

发布于 2018-02-27 01:15:07

不,我不认为有任何重大的变化。我现在还在用它。

我想他们只是想让你看看他们的其他文档,比如find_package

在编写新的查找模块时,我通常只是查看其他FindXXX.cmake作为示例/模板,然后从那里开始。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48990833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档