I develop a project which consisting of several shared libraries and build it with CMake.
Each library is built via add_subdirectory()
.
What is the best way to add all the API headers of the fist library to the CMakeLists.txt of the second?
Encode the include directories in the target itself:
http://www.cmake.org/cmake/help/git-master/manual/cmake-buildsystem.7.html#include-directories-and-usage-requirements
That doc is new, but the target_include_directories command exists since CMake 2.8.11. Use it with the INTERFACE or PUBLIC option.
To make an answer of steveire complete:
for the library which exports API we should write
target_include_directories("target_with_api" INTERFACE "path_to_api_includes")
and for the library which uses this API we write
target_include_directories("api_client_target_name" PRIVATE
$<TARGET_PROPERTY:"target_with_api",INTERFACE_INCLUDE_DIRECTORIES>)
where $<TARGET_PROPERTY:"target_with_api",INTERFACE_INCLUDE_DIRECTORIES>)
returns us target property assigned to the library with API
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With