包含其他库的 CMake add_library
CMake add_library containing other libraries
我正在设计一组可以在我的其他 C++ 项目中 link 编辑的库。为了使馆藏易于使用,我希望能够 link 到各个图书馆,或者 link 到一个包含所有其他图书馆的主图书馆。我如何在 CMakeLists.txt
文件中指定它?
例如:
add_library(library1 SHARED
file1.cpp
file2.cpp
)
add_library(library2 SHARED
file3.cpp
file4.cpp
)
# Define a master library that contains both of the others
add_library(master_library SHARED
library1
library2
)
是否有使用 CMake 获得此功能的正确方法?
编辑:
此问题与以下问题不重复:
这仅与共享库有关,与静态库或可执行文件无关。
只需在您的项目中创建一个函数:
function(link_all_libs TARGET)
target_link_libraries(TARGET library1 library2)
endfunction(link_all_libs)
现在您可以简单地:
link_all_libs(myapp)
这个解决方案似乎有效。
add_library(library1 SHARED
file1.cpp
file2.cpp
)
add_library(library2 SHARED
file3.cpp
file4.cpp
)
# dummy file is required to avoid a cmake error, but this
# "dummy" file serves no other purpose and is empty.
add_library(master_library SHARED
dummy.cpp
)
# Link the master library with the other libraries
target_link_libraries(master_library
library1
library2
)
完成此操作后,我能够仅使用主库来编译和link代码。
我正在设计一组可以在我的其他 C++ 项目中 link 编辑的库。为了使馆藏易于使用,我希望能够 link 到各个图书馆,或者 link 到一个包含所有其他图书馆的主图书馆。我如何在 CMakeLists.txt
文件中指定它?
例如:
add_library(library1 SHARED
file1.cpp
file2.cpp
)
add_library(library2 SHARED
file3.cpp
file4.cpp
)
# Define a master library that contains both of the others
add_library(master_library SHARED
library1
library2
)
是否有使用 CMake 获得此功能的正确方法?
编辑:
此问题与以下问题不重复:
这仅与共享库有关,与静态库或可执行文件无关。
只需在您的项目中创建一个函数:
function(link_all_libs TARGET)
target_link_libraries(TARGET library1 library2)
endfunction(link_all_libs)
现在您可以简单地:
link_all_libs(myapp)
这个解决方案似乎有效。
add_library(library1 SHARED
file1.cpp
file2.cpp
)
add_library(library2 SHARED
file3.cpp
file4.cpp
)
# dummy file is required to avoid a cmake error, but this
# "dummy" file serves no other purpose and is empty.
add_library(master_library SHARED
dummy.cpp
)
# Link the master library with the other libraries
target_link_libraries(master_library
library1
library2
)
完成此操作后,我能够仅使用主库来编译和link代码。