在 Visual Studio 中,一个“解决方案”可以有多个项目,而且一个项目可以是另一个项目的依赖项。
之所以有用,是因为 Visual Studio 会在编译您正在构建的项目时构建依赖项。
这确保您正在编译的依赖二进制文件始终是最新版本。忽略自定义库中正在进行的(而非发布的)代码等问题,如何在 CLion 或其他 Linux 开发设置/环境中实现此行为?
我知道正常的工作流程是将库放入 /usr/lib/
但是还有其他方法吗?
最佳答案
使用您在评论中布置的结构,它可能是这样的
project(A)
add_executable(A ${SOURCES_FOR_A})
target_link_libraries(A B C D) # Make A depend on libraries B, C and D
add_library(B STATIC ${SOURCES_FOR_B})
add_library(C STATIC ${SOURCES_FOR_C})
add_library(D STATIC ${SOURCES_FOR_D})
请注意,C 和 D 之间没有特殊的依赖关系,因为静态库通常只不过是目标文件的简单存档。静态库本身并没有真正链接,您需要在链接可执行文件时提供所有静态库,即使应用程序不直接使用其中任何一个。
如果库是共享的,那就有点不同了:
project(A)
add_executable(A ${SOURCES_FOR_A})
target_link_libraries(A B C) # Make A depend on libraries B and C
add_library(B SHARED ${SOURCES_FOR_B})
add_library(C SHARED ${SOURCES_FOR_C})
target_link_libraries(C D) # Make C depend on D
add_library(D SHARED ${SOURCES_FOR_D})
共享库是链接的,与可执行目标非常相似。因此目标 A
不需要指定对 D
的间接依赖,因为它链接到 C
。
[注意:上面显示的 CMake 命令可能不是所需的确切语法和参数。阅读the documentation以获得确切的语法。]
关于c++ - 如何以与 VS 解决方案(VS 自动构建依赖项)类似的方式管理自定义库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46900542/