gpt4 book ai didi

cmake - KitWare 的在 CMake 中查找库的指南中弃用了哪些内容?

转载 作者:行者123 更新时间:2023-12-05 00:48:44 25 4
gpt4 key购买 nike

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

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

来自 Kitware,但有一个关于它被弃用的免责声明。在过去,比如 6 到 7 年,这些模块的编写方式发生了哪些重大变化(如果有的话)?

最佳答案

是的,CMake Wiki 的内容现已正式移入 CMake 的文档中,因此“已弃用”警告更像是不再关注 Wiki 的一般警告。

在您的情况下,CMake Wiki: How To Find Libraries 的主要部分移至 CMake 的文档 cmake-packages 章节。

发生了什么变化?

我认为过去几年的主要变化是斯蒂芬凯利在他的 "Embracing Modern CMake"谈话叫:

Modern CMake packages define IMPORTED targets

find_package(Foo REQUIRED)

add_executable(hello main.cpp)
target_link_libraries(hello
Foo::Core
)


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

The traditional approach is to use variables for everything, including libraries and executables. This is what most of the existing find modules provided by CMake do.

The more modern approach is to behave as much like config file packages files as possible, by providing imported target. This has the advantage of propagating Transitive Usage Requirements to consumers.



详情

您可以将这种“现代方法”视为以前方法的扩展(如 "FindZLIB: Add imported target and documentation" commit )。

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

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

关于cmake - KitWare 的在 CMake 中查找库的指南中弃用了哪些内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48990833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com