Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

easily include headers from library dependency in cmake

I'm experimenting with CMake a bit for a C++ repository, but I'm running into some trouble trying to make it easy to build applications against libraries in the same source tree without a lot of extra CMake code.

The layout of the source tree is basically the following:

ROOT
    libs/
         lib1/
         lib2/
         lib3/
    apps/
         app1/
         app2/
         app3/

The libraries are independent of one another, and the applications may link against one or more of the libraries.

Currently I have a root CMakeLists.txt that lists out each application and library as a subdirectory so that if the library is changed and the application is rebuilt, so is the library. This works fine and CMake links it in without me having to specify where the library lives, but I don't see a way to do something similar for include directories.

Is there a common way to handle this? I'd prefer not to have each application's CMakeLists.txt have to manually list out the path to the libraries it needs.

like image 573
Paul D. Avatar asked Nov 14 '22 01:11

Paul D.


1 Answers

If you are not afraid of making more headers available than you actually need for each application, you could list all lib directories in an INCLUDE_DIRECTORIES statement e.g. in the CMakeListst.txt adding all application sublists. But there is no such concept of managing "belonging" include folders per target built-in.

like image 95
languitar Avatar answered Dec 30 '22 12:12

languitar