que tienen la siguiente distribución:CMake: ¿cómo crear una sola biblioteca compartida desde todas las bibliotecas estáticas de subproyectos?
top_project
+ subproject1
+ subproject2
Cada uno de subproject1
y subproject2
crea una biblioteca estática. Me gustaría vincular estas bibliotecas estáticas en una única biblioteca compartida en el nivel top_project
.
La información recopilada hasta el momento es:
- compilar usando
-fPic
(necesaria en todo menos en Windows) con el fin de crear un código independiente de la posición que permitirá la vinculación de las bibliotecas estáticas en una sola biblioteca compartida o descomprimir todas las bibliotecas estáticas (por ejemplo, utilizandoar
) y volver a vincularlas en una biblioteca compartida (que creo que es una solución no portátil & no elegante - Todos los archivos de origen se deben dar explícitamente al comando
add_library
: por alguna razón que No puedo comprender, simplemente escribiendoadd_library(${PROJECT_NAME} SHARED subproject1 subproject2)
no funciona como se esperaba (esencialmente crea una biblioteca vacía & no registra las dependencias correctamente) - Hay una característica de biblioteca OBJECT en CMake pero no creo que su propósito sea realmente hacer lo que quiero.
¿Alguna idea?
Estoy usando cmake 3.4. + Y simplemente agrego libs estáticos a lib compartido y se compilan a un solo archivo :) Probé esto en android :) –
¿Alguien podría tener una pista sobre cómo hacer esto bajo MSVC? Estoy usando qmake y no cmake pero puedo manejar los pasos yo mismo, si puedo resolverlos ... –