как получить несколько библиотек из одного проекта в cmake в моем проекте - PullRequest
0 голосов
/ 01 октября 2018

У меня есть проект, подобный этому:

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

Когда я компилирую пробный объект, я хотел бы получить следующие объекты в результате:

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

Проект в настоящее время строитlibapi_1.so / libapi_1.a, но он не строит два других.Из-за очень высокой сложности пробного и непонятного именования я не могу понять, где / как следует изменить основной уровень CMakeLists.txt, чтобы получить дополнительный файл .so / .a.

Может кто-нибудь дать мне четкие инструкции о том, что нужно?

1 Ответ

0 голосов
/ 01 октября 2018

Вы можете настроить 2 (или более) проекта в вашем CMakeLists.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
...