CMAKE:¿cómo copiar correctamente el archivo de encabezado de bibliotecas estáticas en/usr/include?

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:



  1. Las bibliotecas se compilan y vinculan en archivos *.a. [ESTO
    FUNCIONA]

  2. Entonces deseo copiar esos archivos *.a en /usr/local/lib [ESTO TAMBIÉN FUNCIONA]

  3. 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