作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
CMake 自动创建一个 FooTarget.cmake
文件例如添加
install(EXPORT FooTargets
FILE FooTargets.cmake
NAMESPACE Foo::
DESTINATION lib/cmake/Foo
)
CMakeLists.txt
一个名为 Foo 的库。
FooTargets.cmake
有什么区别和
FindFoo.cmake
?使用上面的代码片段,
FooTarget.cmake
通过运行
sudo make install
自动安装在构建目录中。
find_package(Foo)
中不一定能找到这样的库。 .这有什么意义
FooTarget.cmake
文件,如果它不会使库自动发现?由于库是由 CMake 生成的,因此 CMake 本身似乎应该知道如何生成
FindFoo.cmake
库,使库可以被其他使用 CMake 的项目自动发现,并将其放在平台上应放在的位置。
最佳答案
使用 find_package(Foo)
发现包包括两个步骤:
find_package
定位脚本 FooConfig.cmake
描述包裹 Foo
. FooConfig.cmake
由 CMake 在主项目(调用 find_package
)的上下文中处理。FooTarget.cmake
由 CMake 生成有助于第二步。此脚本旨在(与
include()
一起)包含到
FooConfig.cmake
中.当
FooTarget.cmake
由 CMake 处理,它创建 IMPORTED 目标并设置它们的属性。
FooConfig.cmake
脚本只包含一行:
include("${CMAKE_CURRENT_LIST_DIR}/FooTarget.cmake")
install(FILES)
安装进入
find_package
所在的目录可以找到脚本(目录
lib/cmake/Foo
非常适合此目的)。
FooConfig.cmake
脚本暗示它安装在
FooTarget.cmake
附近脚本包含在其中。
FooConfig.cmake
脚本可以检查包版本(带有请求的版本),解释
COMPONENTS
find_package
的请求,定义主项目可用的函数/宏等等。该脚本的示例可以在
CMake documentation 中找到。 .
关于cmake - FooTarget.cmake 和 FindFoo.cmake 的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58882018/
CMake 自动创建一个 FooTarget.cmake文件例如添加 install(EXPORT FooTargets FILE FooTargets.cmake NAMESPACE Foo
我是一名优秀的程序员,十分优秀!