如何在CMake软件包配置文件中指定可选依赖项?

横滚

我试图在MyLibConfig.cmake我的项目文件中正确指定依赖项CMakeLists.txt我有这样的事情:

find_package(aLib REQUIRED)
find_package(bLib)

所以MyLibConfig.cmake我写了类似的东西:

include(CMakeFindDependencyMacro)
find_dependency(aLib REQUIRED)
find_dependency(bLib)

现在,当我编写另一个需要myLib的项目时,我做了:

find_package(MyLib REQUIRED)

失败是因为MyLib配置文件找不到bLib,但我希望将其视为可选文件。什么是最好的现代CMake实践来解决这个问题?

齐瓦列夫

find_dependency 仅用于(最初)REQUIRED软件包。

find_package“非必需”子程序包的“复制”到XXXConfig.cmake脚本时保持不变

对于CMakeLists.txt包含

find_package(aLib REQUIRED)
find_package(bLib)

的对应内容为MyLibConfig.cmake

include(CMakeFindDependencyMacro)
# for REQUIRED package 'find_package' is replaced with 'find_dependency',
# but 'REQUIRED' keyword is omited.
find_dependency(aLib)
# for non-REQUIRED package 'find_package' remains.
find_package(bLib)

不要REQUIRED关键字传递给,这一点很重要所以,一个电话find_dependency

find_package(MyLib) # Without 'REQUIRED'!

aLib错过包裹,然后调用(失败)

find_dependency(aLib)

CMake也将MyLib被视为错过(并打印一条适当的消息),但不会因此而停止配置。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Debian软件包中定义可选的依赖项

来自分类Dev

如何在不重新安装软件包的情况下删除软件包的配置文件

来自分类Dev

指定软件包的Maven依赖项

来自分类Dev

如何清除软件包配置文件?

来自分类Dev

指定应在package.json中安装不带有可选依赖项的软件包

来自分类Dev

如何在ssh配置文件中指定RemoteForward?

来自分类Dev

如何在ArangoDB docker映像中指定配置文件?

来自分类Dev

正确使用可选的软件包功能和依赖项

来自分类Dev

当将虚拟软件包指定为依赖项时,apt / dpkg如何选择安装哪个实际软件包?

来自分类Dev

如何在具有多个软件包的Bitbake配方中指定软件包版本?

来自分类Dev

易于安装比指定为依赖项更多的软件包

来自分类Dev

如何在不安装软件包本身的情况下安装rpm软件包的依赖项?(rhel / fedora)

来自分类Dev

如何以及谁应将wheel指定为Python软件包依赖项?

来自分类Dev

如何在Chocolatey软件包安装脚本中指定端口?

来自分类Dev

删除任何软件包的配置文件

来自分类Dev

哪个软件包提供了特定的配置文件?

来自分类Dev

诺基亚X 304-从APK文件中提取的软件包名称与内容项中指定的软件包名称不匹配

来自分类Dev

(如何)我可以抑制未找到软件包配置文件的警告?

来自分类Dev

如何列出已经安装的软件包的所有配置文件?

来自分类Dev

如何列出已删除软件包的残留配置文件?

来自分类Dev

如何列出已经安装的软件包的所有配置文件?

来自分类Dev

如何最大程度地减少软件包依赖项安装的不必要文件?

来自分类Dev

安装软件包后如何删除依赖项安装的文件

来自分类Dev

如何在整个系统而不是作为依赖项安装erlang软件包?

来自分类Dev

如何在不安装依赖项的情况下安装软件包?

来自分类Dev

如何在npm中升级全局软件包的依赖项

来自分类Dev

如何仅升级特定的软件包依赖项?

来自分类Dev

如何确保Debian软件包没有依赖项

来自分类Dev

如何从Packagist安装Satis软件包依赖项

Related 相关文章

  1. 1

    如何在Debian软件包中定义可选的依赖项

  2. 2

    如何在不重新安装软件包的情况下删除软件包的配置文件

  3. 3

    指定软件包的Maven依赖项

  4. 4

    如何清除软件包配置文件?

  5. 5

    指定应在package.json中安装不带有可选依赖项的软件包

  6. 6

    如何在ssh配置文件中指定RemoteForward?

  7. 7

    如何在ArangoDB docker映像中指定配置文件?

  8. 8

    正确使用可选的软件包功能和依赖项

  9. 9

    当将虚拟软件包指定为依赖项时,apt / dpkg如何选择安装哪个实际软件包?

  10. 10

    如何在具有多个软件包的Bitbake配方中指定软件包版本?

  11. 11

    易于安装比指定为依赖项更多的软件包

  12. 12

    如何在不安装软件包本身的情况下安装rpm软件包的依赖项?(rhel / fedora)

  13. 13

    如何以及谁应将wheel指定为Python软件包依赖项?

  14. 14

    如何在Chocolatey软件包安装脚本中指定端口?

  15. 15

    删除任何软件包的配置文件

  16. 16

    哪个软件包提供了特定的配置文件?

  17. 17

    诺基亚X 304-从APK文件中提取的软件包名称与内容项中指定的软件包名称不匹配

  18. 18

    (如何)我可以抑制未找到软件包配置文件的警告?

  19. 19

    如何列出已经安装的软件包的所有配置文件?

  20. 20

    如何列出已删除软件包的残留配置文件?

  21. 21

    如何列出已经安装的软件包的所有配置文件?

  22. 22

    如何最大程度地减少软件包依赖项安装的不必要文件?

  23. 23

    安装软件包后如何删除依赖项安装的文件

  24. 24

    如何在整个系统而不是作为依赖项安装erlang软件包?

  25. 25

    如何在不安装依赖项的情况下安装软件包?

  26. 26

    如何在npm中升级全局软件包的依赖项

  27. 27

    如何仅升级特定的软件包依赖项?

  28. 28

    如何确保Debian软件包没有依赖项

  29. 29

    如何从Packagist安装Satis软件包依赖项

热门标签

归档