- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有静态库 Foo
, 静态库 Bar
这取决于 Foo
和可执行 Baz
这取决于 Bar
.
相关栏目来自 Foo
CMakeLists.txt
:
# Specifying files to copy during "make install" command.
install(TARGETS Foo EXPORT FooConfig
INCLUDES DESTINATION include
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
# Specifying config file that will be used to find a library using find_package().
install(EXPORT FooConfig
FILE FooConfig.cmake
NAMESPACE Foo::
DESTINATION lib/cmake/Foo)
export(TARGETS Foo
NAMESPACE Foo::
FILE FooConfig.cmake)
Bar
CMakeLists.txt
:
# Specifying libraries that are required for build.
find_package(Foo REQUIRED)
# Specifying libraries to link to for the users of the library.
target_link_libraries(Bar PUBLIC Foo::Foo)
# Specifying files to copy during "make install" command.
install(TARGETS Bar EXPORT BarConfig
INCLUDES DESTINATION include
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
# Specifying config file that will be used to find a library using find_package().
install(EXPORT BarConfig
FILE BarConfig.cmake
NAMESPACE Bar::
DESTINATION lib/cmake/Bar)
export(TARGETS Bar
NAMESPACE Bar::
FILE BarConfig.cmake)
Baz
CmakeLists.txt
:
find_package(Bar REQUIRED)
target_link_libraries(Baz PRIVATE Bar::Bar)
Baz
我得到:
CMake Error at CMakeLists.txt:19 (add_executable):
Target "Baz" links to target "Foo::Foo" but the
target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
Bar
并正确确定它依赖于
Foo
但找不到
Foo
.我有另一个直接依赖于
Foo
的测试项目它构建得很好。如何解决这个问题?
最佳答案
不幸的是,BarConfig.cmake
像这样生成的不处理查找依赖项,我不得不修改 Bar
CMakeLists.txt
对此:
# Specifying files to copy during "make install" command.
install(TARGETS Bar EXPORT BarTargets
INCLUDES DESTINATION include
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
install(FILES CMake/BarConfig.cmake DESTINATION lib/cmake/Bar)
# Specifying config file that will be used to find a library using find_package().
install(EXPORT BarTargets
FILE BarTargets.cmake
NAMESPACE Bar::
DESTINATION lib/cmake/Bar)
export(TARGETS Bar
NAMESPACE Bar::
FILE BarTargets.cmake)
CMake/BarConfig.cmake
有了这个:
include("${CMAKE_CURRENT_LIST_DIR}/BarTargets.cmake")
find_package(Foo REQUIRED)
BarConfig.cmake
在全局安装并调用
find_package
找到
Foo
.
关于通过 find_package() 找不到 CMake 传递依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46861504/
我们有一个 CMakeLists.txt 链接(例如)opencv 到我们的各种二进制文件。这是按如下方式完成的: find_package(OpenCV REQUIRED core imgproc
我有一个名为 messages 的外部项目.我正在使用 ExternalProject_Add 来获取和构建项目。 如果我使用 find_package(messages REQUIRED)在顶级 C
我有一个带有配置文件支持组件的 cmake 包,例如 find_package(myPack REQUIRED COMPONENTS foo bar) 在 myPackConfig.cmake 中我通
是否有一个变量存储与包版本类似的找到的包的路径? find_package(name) message("name version: ${name_VERSION}") #something like
是否有一个变量存储与包版本类似的找到的包的路径? find_package(name) message("name version: ${name_VERSION}") #something like
我可以在哪里或如何获得 find_package 支持的软件包的完整列表? 我知道这些是模块,所以它们必须驻留在某个地方? 我正在为 C++/ROS 构建在线自动打包系统,我需要一份详细的可用内容列表
我需要使用 mangrove(基于 mongo-c-driver 和 mongo-cxx-driver 的 mongo ODM 库)并将其作为 CMake ExternalProject_Add 命令
这可能是一个新手错误,但我处于学习 python 的早期阶段。 运行 Win7 64 位 Python 是 2.7.2 64 位,python 在 CMD 提示符下运行良好。 I downloaded
我正在尝试将 OpenCv 包含在一个项目中,实际上我的计算机上有 2 倍于该库的相同版本。一种在/good/path 中使用额外的所需函数(Cuda 和 OpenGl 支持)编译,另一种在/old/
我目前正在尝试编写我的第一个重要的 CMake 项目,但我无法检查 FIND_PACKAGE() 的任何输出,因为它似乎没有将值赋予我期望的全局变量!例如,下面的代码: MESSAGE("CMake
CMake manual of Qt 5使用 find_package并说: Imported targets are created for each Qt module. Imported tar
在我的 CMake 项目中,我提供了用户可编辑的 Boost 的默认路径。 set(PATH_BOOST_DEFAULT "/softs/boost/${BOOST_VER}/${ARCH}/gcc/
在我的CMake包中,有一个对find_package的调用。这成功了,太好了!但是,事实证明这是该软件包的错误版本。我现在要删除该程序包。但是,我不知道它在系统上的什么位置,也不知道CMake必须在
当我尝试安装我的包时,它没有安装任何东西。当我手动执行 find_packages 时,它返回一个空列表。 这是我的 setup.py 文件: from setuptools import setup
在文件 CMakelists.txt 中我看到 find_packages 和 catkin_package: find_package(catkin REQUIRED COMPONENTS rosc
当我尝试安装我的包时,它没有安装任何东西。当我手动执行 find_packages 时,它返回一个空列表。 这是我的 setup.py 文件: from setuptools import setup
我正在创建一个 python 包(第一次)并且能够打包内容,但我在打包子目录中的一个数据文件时遇到问题。我的目录结构如下所示 ├── Jenkinsfile ├── MANIFEST.in ├── R
因此,我想创建一个 C 库,该库可以通过 cmake 中的 find_package 函数轻松地在其他项目中使用。具体来说,我想要一个名为 foo 的项目,可以像这样访问: find_package
确保 cmake 仅从特定根目录中查找库和 header 的最佳方法是什么。 假设: 我们只想查看特定目录(例如:/mysdkroot/) 我们要忽略所有不在特定目录中的文件(例如,不应使用/usr/
我试图避免 cmake find_package 使用系统中的 FindJPEG.cmake,我创建了 FindJPEG.cmake 的拷贝并稍微更改它并在其中放入一条消息(状态“...”)能够区分它
我是一名优秀的程序员,十分优秀!