我有一个由CMake管理的项目,它有多个库,它们之间有链接时间依赖关系,但是每个库都可以相互独立地编译.我如何向CMake表达这一点,以便我可以同时构建所有库?
例如,我尝试了这个CMakeLists.txt:
cmake_minimum_required(VERSION 2.6)
project (test)
add_library(lib1 STATIC lib1.cpp)
add_library(lib2 STATIC lib2.cpp)
add_library(lib3 STATIC lib3.cpp)
add_executable(main main.cpp)
target_link_libraries(lib2 lib1)
target_link_libraries(lib3 lib2)
target_link_libraries(main lib3)
Run Code Online (Sandbox Code Playgroud)
每个文件只定义一个不同的空函数,如:
void f1() {}
Run Code Online (Sandbox Code Playgroud)
当我打字时cmake . && make -j4,我看到了这个:
[ 25%] Building CXX object CMakeFiles/lib1.dir/lib1.cpp.o
Linking CXX static library liblib1.a
[ 25%] Built target lib1
[ 50%] Building CXX object CMakeFiles/lib2.dir/lib2.cpp.o
Linking CXX static library liblib2.a
[ 50%] Built target lib2
[ 75%] Building CXX object CMakeFiles/lib3.dir/lib3.cpp.o
Linking CXX static library liblib3.a
[ 75%] Built …Run Code Online (Sandbox Code Playgroud) cmake ×1