CMAKE:¿cómo copiar correctamente el archivo de encabezado de bibliotecas estáticas en/usr/include?
Me estoy metiendo en el uso de CMAKE con C y, de hecho, estoy creando dos bibliotecas estáticas muy pequeñas.
Mi objetivo es:
- Las bibliotecas se compilan y vinculan en archivos *.a. [ESTO
FUNCIONA] - Entonces deseo copiar esos archivos *.a en /usr/local/lib [ESTO TAMBIÉN FUNCIONA]
- Hasta donde yo sé acerca de las bibliotecas (muy poco), están vinculadas usando
-lnameoflib
, que es un indicador del compilador. ESTÁ BIEN. He preparado mi CMakeLists.txt y en realidad copia archivos *.a en/usr/local/lib
. Sin embargo, para poder usarlos en un programa, también necesito copiar sus archivos de encabezado en/usr/local/include
, entonces puedo incluirlos de la manera más fácil#include <mylibheader.h>
. Así es como lo entiendo ahora.
Y mi pregunta es:¿cuál es la forma correcta de copiar archivos de encabezado en la carpeta /usr/include con CMAKE? Me gustaría que los copiara automáticamente cuando make install
se ejecuta, como los archivos *.a.
Para ambas bibliotecas tengo un CMakeLists.txt similar:
project(programming-network)
add_library(programming-network STATIC
send_string.c
recv_line.c
)
INSTALL(TARGETS programming-network
DESTINATION "lib"
)
Respuestas:
Una mejor manera para la versión más reciente de cmake es usar el PUBLIC_HEADER
del objetivo propiedades.
project(myproject)
add_library(mylib some.c another.c)
set_target_properties(mylib PROPERTIES PUBLIC_HEADER "some.h;another.h")
INSTALL(TARGETS mylib
LIBRARY DESTINATION some/libpath
PUBLIC_HEADER DESTINATION some/includepath
)
Algunas referencias:
PUBLIC_HEADER
Comando de instalación CMake