CMAKE - How to properly copy static library's header file into /usr/include? CMAKE - How to properly copy static library's header file into /usr/include? c c

CMAKE - How to properly copy static library's header file into /usr/include?


A better way for newest cmake version is to use target's PUBLIC_HEADER properties.

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)

Some ref:

PUBLIC_HEADER

CMake install command


In a much better way, will copy all files that match the pattern and will preserve the directory structure.

INSTALL (    DIRECTORY ${CMAKE_SOURCE_DIR}/include/    DESTINATION include    FILES_MATCHING PATTERN "*.h*")


I don't think your solution is the correct one. /usr/include should be reserved for your vendor to put files in.

The proper thing to do IMO is to install the header in /usr/local/include and then instruct the user to export CPATH="/usr/local/include:${CPATH}".

It seems /usr/local/lib was search automatically but if you wish to use another dir export LIBRARY_PATH="/usr/local/lib:${LIBRARY_PATH}" works similar for the .a binary (but may or may not work good for shared libraries depending on your os).

Optionally, but more cumbersome is to add -I /usr/local/include and -L /usr/local/lib while compiling.

This is a somewhat subjective answer, but it's been working well for me.