在Visual Studio中,"解决方案"可以有多个项目,项目可以是另一个项目的依赖项。
它之所以有用是因为Visual Studio会在您构建的项目编译时构建依赖项。
这可确保您正在编译的依赖项二进制文件始终是最新版本。忽略自定义库中的正在进行(而非释放)代码等问题,如何在CLion或其他Linux开发设置/环境中实现此行为?
我知道正常的工作流程是将库放入/usr/lib/
但是有另一种方法吗?
答案 0 :(得分:1)
使用您在评论中列出的结构,它可能是这样的
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以获取确切的语法。]