C++ 多库CMakeLists.txt
我们有一个项目p(C++ 多库CMakeLists.txt,c++,c,cmake,C++,C,Cmake,我们有一个项目p(Linux上的C/C++),由库lib1,lib2,lib3组成 lib1独立链接到另一个系统范围的libs lib2链接到lib1 lib3链接到lib1和lib2 我们有一个目录p和每个lib的额外目录(因此,p/lib1/,p/lib2/…)。每个库都有自己的测试 问题: 请问,如何组织此场景的CMakeLists.txt 我们应该只创建一个主build目录还是为每个库创建一个主目录 我们能否在CMakeLists.txt中为静态链接与共享链接提供一个选项 在这种情
Linux上的C/C++
),由库lib1
,lib2
,lib3
组成
独立链接到另一个系统范围的libslib1
链接到lib2
lib1
链接到lib3
和lib1
lib2
p/lib1/
,p/lib2/
…)。每个库都有自己的测试
问题:
- 请问,如何组织此场景的
CMakeLists.txt
- 我们应该只创建一个主
目录还是为每个库创建一个主build
目录
- 我们能否在
中为CMakeLists.txt
静态链接与共享链接提供一个选项
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 )