У меня есть следующий макет:
top_project
+ subproject1
+ subproject2
Каждый из subproject1
и subproject2
создает статическую библиотеку. Я хотел бы связать эти статические библиотеки в одной общей библиотеке на уровне top_project
.
Информация, которую я собрал до сих пор:
- Скомпилируйте с помощью
-fPic
(необходимо для всего, кроме Windows), чтобы создать независимый от позиции код, который позволит связать статические библиотеки с одной общей библиотекой или распаковать все статические библиотеки (например, с помощьюar
) и повторно -свяжите их в общую библиотеку (которая, я думаю, является неэлегантным и не переносным решением). - Все исходные файлы должны быть явно указаны в команде
add_library
: по какой-то причине, которую я не могу понять, просто записьadd_library(${PROJECT_NAME} SHARED subproject1 subproject2)
не работает должным образом (она по существу создает пустую библиотеку и неправильно регистрирует зависимости) - В CMake есть функция библиотеки OBJECT, но я не думаю, что она предназначена для того, чтобы делать то, что я хочу.
Любые мысли?