在这种情况下,我会建议使用一个构建/目录。 CMake可能会在那里生成单独的lib1,lib2和lib3目录。
STATIC之间的交换与共享关系可以用BUILD_SHARED_LIBS标志来完成(检查add_library文档)
关于组织的CMakeLists.txt,选择是你的:
你可以构建一个具有多个add_library条目的CMakeLists.txt。 这有一个好处,你会得到一个单一的CMakeLists.txt,当项目很简单时,有些人可能会喜欢。
您可以将您的项目拆分为分布在lib1,lib2和lib3目录中的多个CMakeLists.txt,并使用与add_subdirectory一起使用的根cmakelists.txt。这个设置的好处是,通过一次调用(在你的build /目录下)就可以更容易地生成构建文件,但是你可以轻松地进入lib3 /并在那里调用make/msbuild。 CMake的将确保依存关系是建立正确
例1:
project(P)
# Setup lib1
set (LIB1_SOURCES ...) # Fill in your set of source-files here...
add_library(lib1 ${LIB1_SOURCES})
# Do similar for lib2 and lib3
target_link_libraries(lib2 lib1) # Indicate that lib1 is needed for lib2
target_link_libraries(lib3 lib1 lib2) # Indicate that lib2 and lib1 are needed for lib3
例2:
project(P)
add_subdirectory(lib1)
add_subdirectory(lib2)
add_subdirectory(lib3)
在每个子目录,然后你写你的CMakeLists.txt。例如。在lib3的情况下:
project(lib3)
set(LIB3_SOURCES ...) # Setup the list of sources here.
add_library(lib3 ${LIB3_SOURCES})
# You can refer to other libraries which should be available from the root cmakelists.
target_link_libraries(lib3 lib1 lib2)
太好了,谢谢。 – Cartesius00