如何在我的项目中从 CMAKE 中的同一项目获取多个库

how to get multiple libraries from the same project in cmake in my project

本文关键字:项目 获取 CMAKE 我的      更新时间:2023-10-16

>我有一个这样的项目:

main
|- CMakeLists.txt
|- src
|- api_1
|  |- CMakeLists.txt (#1)
|  |- api_1.h
|  |- api_1.cpp
|
|- api_2
|- CMakeLists.txt (#2)
|- api_2.h
|- api_2.cpp

当我编译 probject 时,我想获取以下对象 结果:

executable
libapi_1.so / libapi_1.a
libapi_2.so / libapi_2.a

该项目目前构建libapi_1.so/libapi_1.a,但不构建其他两个。由于 probject 的复杂性非常高且命名晦涩难懂,我无法理解在哪里/如何适当地修改主级CMakeLists.txt以获得额外的.so / .a文件。

有人可以向我提供关于需要什么的明确说明吗?

您可以在CMakeList 中设置 2 个(或更多(项目.txt:

project(FullProject)
# config...
add_executable(exec1 ${sources_files}) # This line will create a new executable target
target_link_libraries(exec1 lib_you_need)
# config exec1...
# Now defines another target which is a library
add_library(lib1 ${sources_files}) # This line will create a new library target
target_include_directories(lib1 PRIVATE path_you_need)

当你构建时,你将有 2 个目标:exec1 和 lib1,你可以使用以下命令构建你想要的目标:

cmake --build . --target your_target # exec1 or lib1

make your_target # exec1 or lib1