多个项目是否可以使用相同的软件包名称导出目标?

状态

是否可以将两个或多个完全独立的项目以cmake的相同包名称导出目标?

因此,例如,在独立安装多个库之后,您将可以在自己的项目中将它们链接起来,如下所示:

find_package(SharedPackageName REQUIRED COMPONENTS Lib1 Lib2)

add_executable(MyProgram "main.cpp")
target_link_libraries(MyProgram SharedPackageName::Lib1 SharedPackageName::Lib2)

这里的想法是让我所有的库成为它们自己的独立项目,并具有自己的git存储库,可以单独安装,但同时又使其看起来像是更大的“组织”库的一部分(通过安装每个库的include目录)在共享组织的父目录下,并在共享组织包名称下公开cmake目标)。类似于c ++ boost库

我试图自己解决一个问题,但是面临的问题是,每当我安装一个库时,它就会覆盖以前的cmake配置文件,因为它们使用相同的名称:

project("SharedPackageName")
set(LIB_NAME "Lib1")

add_library("${LIB_NAME}" "src/libsrc.cpp")

target_include_directories("${LIB_NAME}" PUBLIC "include")

install(DIRECTORY "${CMAKE_SOURCE_DIR}/include/${PROJECT_NAME}/${LIB_NAME}"
        DESTINATION "include/${PROJECT_NAME}")

install(TARGETS "${LIB_NAME}" 
        EXPORT "${PROJECT_NAME}Config" 
        DESTINATION "lib")

install(EXPORT "${PROJECT_NAME}Config" 
        NAMESPACE "${PROJECT_NAME}::"
        DESTINATION "lib/cmake/${PROJECT_NAME}")

是否可能使cmake目标“附加”到现有配置文件而不是覆盖它?

亚历克斯·雷肯(Alex Reinking)

当然,只是不要将目标导出文件设置为对每个子项目使用相同的名称。而是给它们提供具有唯一前缀的所有唯一名称,例如targets-<subproj>.cmake然后创建一个<Project>Config.cmakeglob,用于targets-*.cmake遍历结果列表,并对include()每个结果进行遍历每个子项目都安装相同的<Project>Config.cmake文件就可以了,因为它应该始终具有相同的内容。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

其他人可以使用相同的软件包名称前缀吗?

来自分类Dev

两个包装专家可以使用相同的供应商名称发布软件包吗?

来自分类Dev

是否可以在不同的组织中创建具有相同名称的软件包?

来自分类Dev

是否可以“导出”已安装的软件包

来自分类Dev

使用bitbake是否可以根据目标映像对软件包使用不同的do_install?

来自分类Dev

perl-软件包名称:我可以使用root的路径吗?

来自分类Dev

expss软件包可以使用加权数据处理多个答案问题吗?

来自分类Dev

是否可以使用apt-get安装“用于购买”软件包?

来自分类Dev

是否可以使用pip在自托管的gitlab中通过ssh安装软件包?

来自分类Dev

是否可以使用apt-get安装“用于购买”软件包?

来自分类Dev

是否可以在构建期间动态指定软件包名称?

来自分类Dev

是否可以不指定软件包名称?

来自分类Dev

使用NuGet Pack时,是否可以指定没有nuspec文件的软件包名称?

来自分类Dev

是否可以使用“李克特”软件包在多个组中绘制频率数据?

来自分类Dev

安装节点软件包时,可以使用自定义目录名称代替“ node_modules”吗?

来自分类Dev

是否可以使用TFS在线还原具有Xamarin.iOS构建的Nuget软件包?

来自分类Dev

是否可以使用TFS在线还原带有Xamarin.iOS构建的Nuget软件包?

来自分类Dev

更改软件包名称后,项目仍使用旧的软件包名称来启动应用程序

来自分类Dev

npm安装多个软件包名称

来自分类Dev

使用NAMESPACE导入/导出软件包

来自分类Dev

是否可以用我自己的软件包替换特定名称的现有pip软件包?

来自分类Dev

我可以使用Debian软件包构建环境来构建Ubuntu软件包吗?

来自分类Dev

如何在多个C#项目中实施相同的nuget软件包版本?

来自分类Dev

在Anaconda中可以使用PIP时,可以从特定渠道安装软件包吗?

来自分类Dev

防止Python软件包重新导出导入的名称

来自分类Dev

Nuget外部软件包不能依赖于以项目为目标的软件包

来自分类Dev

Nuget外部软件包不能依赖于以项目为目标的软件包

来自分类Dev

如果以某种方式删除了代码,是否可以编写具有相同软件包名称等的新代码并更新现有应用程序?

来自分类Dev

删除软件包时是否可以获得应用程序名称

Related 相关文章

  1. 1

    其他人可以使用相同的软件包名称前缀吗?

  2. 2

    两个包装专家可以使用相同的供应商名称发布软件包吗?

  3. 3

    是否可以在不同的组织中创建具有相同名称的软件包?

  4. 4

    是否可以“导出”已安装的软件包

  5. 5

    使用bitbake是否可以根据目标映像对软件包使用不同的do_install?

  6. 6

    perl-软件包名称:我可以使用root的路径吗?

  7. 7

    expss软件包可以使用加权数据处理多个答案问题吗?

  8. 8

    是否可以使用apt-get安装“用于购买”软件包?

  9. 9

    是否可以使用pip在自托管的gitlab中通过ssh安装软件包?

  10. 10

    是否可以使用apt-get安装“用于购买”软件包?

  11. 11

    是否可以在构建期间动态指定软件包名称?

  12. 12

    是否可以不指定软件包名称?

  13. 13

    使用NuGet Pack时,是否可以指定没有nuspec文件的软件包名称?

  14. 14

    是否可以使用“李克特”软件包在多个组中绘制频率数据?

  15. 15

    安装节点软件包时,可以使用自定义目录名称代替“ node_modules”吗?

  16. 16

    是否可以使用TFS在线还原具有Xamarin.iOS构建的Nuget软件包?

  17. 17

    是否可以使用TFS在线还原带有Xamarin.iOS构建的Nuget软件包?

  18. 18

    更改软件包名称后,项目仍使用旧的软件包名称来启动应用程序

  19. 19

    npm安装多个软件包名称

  20. 20

    使用NAMESPACE导入/导出软件包

  21. 21

    是否可以用我自己的软件包替换特定名称的现有pip软件包?

  22. 22

    我可以使用Debian软件包构建环境来构建Ubuntu软件包吗?

  23. 23

    如何在多个C#项目中实施相同的nuget软件包版本?

  24. 24

    在Anaconda中可以使用PIP时,可以从特定渠道安装软件包吗?

  25. 25

    防止Python软件包重新导出导入的名称

  26. 26

    Nuget外部软件包不能依赖于以项目为目标的软件包

  27. 27

    Nuget外部软件包不能依赖于以项目为目标的软件包

  28. 28

    如果以某种方式删除了代码,是否可以编写具有相同软件包名称等的新代码并更新现有应用程序?

  29. 29

    删除软件包时是否可以获得应用程序名称

热门标签

归档