带有独立子项目的CMake项目

桑迪普·斯里瓦斯塔夫·瓦迪帕蒂

我正在尝试创建一个具有以下目录结构的cmake项目:

root_folder
 lib
   common_library_for_all_submodules
 submodule_1
   src
    main.cpp
   tests
    main_test.cpp
 submodule_2
   src
    main.cpp
   tests
    main_test.cpp
 

我对C ++和CMake都是陌生的,我有以下困惑,如果有人可以在这里向正确的方向指导我,我将非常高兴。

  1. 我来自Java世界,我知道可以使用pom.xml中的modules标记在maven项目中创建。在CMake中有与此等效的东西吗?如果是的话,我们怎么称呼它,有人可以给我一个例子吗?

  2. 然后,我想将该项目导入CLion,然后在运行根项目时,应编译所有子模块并运行相关测试。

注意:submodule_1和submodule_2没有使用彼此的代码。他们是完全独立的。但是他们需要从root_folder / lib共享一些通用库

在此先多谢

伊霍尔(Ihor Drachuk)

您可以使用几个CMakeLists.txt文件,使用add_subdirectory语句。要声明库(将在另一个子项目中使用),请使用add_library声明app- add_executable将库链接到app- target_link_libraries(app1 PRIVATE utils common)这是简短且非常常见的描述示例。还有更多的选项和参数。

另外,我还将附加一些示例,其中包括一些库,应用程序,CMake文件,目录结构。那里缺少什么:实际的* h和* cpp文件-它们不在范围内。我建议您看一下:

https://fex.net/s/8d5tdo5

我还在这里附上示例:

CMakeLists.txt

project(Example)

add_subdirectory(3rd-party)
add_subdirectory(apps)
add_subdirectory(libs)

libs / CMakeLists.txt

add_subdirectory(common)
add_subdirectory(utils)

libs / utils / CMakeLists.txt

FILE(GLOB SOURCES *.cpp *.h)

add_library(utils STATIC ${SOURCES})

target_include_directories(utils PUBLIC .)

apps / CMakeLists.txt

add_subdirectory(app1)
add_subdirectory(app2)

apps / app1 / CMakeLists.txt

FILE(GLOB_RECURSE SOURCES src/*.cpp src/*.h)

add_executable(app1 ${SOURCES})
target_link_libraries(app1 PRIVATE utils common)

在此示例库中utilscommon它们是独立的,可以相互构建且无需应用程序

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在cmake中包含相邻子项目的使用

来自分类Dev

如何在具有多个子项目的SBT项目中覆盖子项目中的设置

来自分类Dev

带有数据库的离子项目

来自分类Dev

Gradle获取子项目的版本

来自分类Dev

Gradle获取子项目的版本

来自分类Dev

子项目的插件符号

来自分类Dev

具有子项目的项目的Xcode代码覆盖率

来自分类Dev

通过CMake添加子项目

来自分类Dev

带有sbt子项目的scala.io.source.fromFile从根资源文件夹读取

来自分类Dev

带有按钮的离子/角离子项目,单击以选择隐藏所选离子项目

来自分类Dev

Java子项目具有Eclipse中超级项目的依赖性

来自分类Dev

在Intellij中有多个子项目的开放项目

来自分类Dev

在列表中查找包含所有子项目的项目

来自分类Dev

汇总子项目的Gradle项目报告

来自分类Dev

多项目而不是子项目的Gradle中间目录

来自分类Dev

如何使用drifferent gradle多项目的子项目

来自分类Dev

子项目的Docker项目管理通过符号链接

来自分类Dev

Cmake:将子项目目标导出到主项目

来自分类Dev

将非C ++子项目集成到CMake项目

来自分类Dev

带有新sbt 0.13多项目定义的连字符子项目名称

来自分类Dev

带有新sbt 0.13多项目定义的连字符子项目名称

来自分类Dev

CMake:根据其他人的子项目标头构建子项目

来自分类Dev

CMake:根据其他人的子项目标头构建子项目

来自分类Dev

使用独立子项目进行回购的Git-SVN

来自分类Dev

当子项目是当前目录时,为什么我的gradle子项目没有配置为子项目?

来自分类Dev

是否有所有春季子项目的清单

来自分类常见问题

如何以DRY方式过滤/禁用SBT中所有子项目的scalac选项

来自分类Dev

Gradle-创建所有子项目的Tar

来自分类Dev

我可以使用Gradle获取所有子项目的依赖关系树吗?

Related 相关文章

  1. 1

    在cmake中包含相邻子项目的使用

  2. 2

    如何在具有多个子项目的SBT项目中覆盖子项目中的设置

  3. 3

    带有数据库的离子项目

  4. 4

    Gradle获取子项目的版本

  5. 5

    Gradle获取子项目的版本

  6. 6

    子项目的插件符号

  7. 7

    具有子项目的项目的Xcode代码覆盖率

  8. 8

    通过CMake添加子项目

  9. 9

    带有sbt子项目的scala.io.source.fromFile从根资源文件夹读取

  10. 10

    带有按钮的离子/角离子项目,单击以选择隐藏所选离子项目

  11. 11

    Java子项目具有Eclipse中超级项目的依赖性

  12. 12

    在Intellij中有多个子项目的开放项目

  13. 13

    在列表中查找包含所有子项目的项目

  14. 14

    汇总子项目的Gradle项目报告

  15. 15

    多项目而不是子项目的Gradle中间目录

  16. 16

    如何使用drifferent gradle多项目的子项目

  17. 17

    子项目的Docker项目管理通过符号链接

  18. 18

    Cmake:将子项目目标导出到主项目

  19. 19

    将非C ++子项目集成到CMake项目

  20. 20

    带有新sbt 0.13多项目定义的连字符子项目名称

  21. 21

    带有新sbt 0.13多项目定义的连字符子项目名称

  22. 22

    CMake:根据其他人的子项目标头构建子项目

  23. 23

    CMake:根据其他人的子项目标头构建子项目

  24. 24

    使用独立子项目进行回购的Git-SVN

  25. 25

    当子项目是当前目录时,为什么我的gradle子项目没有配置为子项目?

  26. 26

    是否有所有春季子项目的清单

  27. 27

    如何以DRY方式过滤/禁用SBT中所有子项目的scalac选项

  28. 28

    Gradle-创建所有子项目的Tar

  29. 29

    我可以使用Gradle获取所有子项目的依赖关系树吗?

热门标签

归档