CMake - Abhängigkeiten (Header) zwischen Apps / Bibliotheken in demselben Projekt

Ich habe folgende Projektstruktur:

CMakeLists.txtlib1 / CMakeLists.txt und alle cpp- und Header-Dateien der liblib2 / CMakeLists.txt und alle cpp- und Header-Dateien der libapp / CMakeLists.txt und alle CPP- und Header-Dateien der App

Die CMakeLists.txt sieht folgendermaßen aus:

PROJECT( ${PROJECT_NAME} )
add_subdirectory(lib1)
add_subdirectory(lib2)
add_subdirectory(app)

Die lib1 / CMakeLists.txt sieht zB so aus (stripped):

SET(SOURCE
file.cpp
)
SET(HEADERS
    some_lib_header.h
)
add_library( lib1 ${SOURCE} ${HEADERS} )

und die für die App sieht bis auf ADD_EXECUTABLE gleich aus:

SET(SOURCE
main.cpp
)
SET(HEADERS
    some_header.h
)
add_library( lib1 ${SOURCE} ${HEADERS} )
ADD_EXECUTABLE( app ${SOURCE} ${HEADERS} )

Auf diese Weise hat das Setup gut funktioniert, da ich auf diese Weise eine Visual Studio-Lösungsdatei generieren kann, die alle drei Projekte enthält. Mein Problem ist jedoch, dass meine App Header-Dateien von lib1 (und auch von lib2, die von lib1 abhängen) enthält. Wenn ich es tue

$mkdir build
$cd build
$cmake -C ..\myproject

Es generiert eine Out-of-Source-VS-SLN-Datei, wie ich es möchte, aber die App lässt sich nicht kompilieren, da die Header-Dateien von lib1 (offensichtlich) nicht gefunden werden können.

Jetzt habe ich viele Dinge gelesen und ausprobiert, wieTARGET_LINK_LIBRARIES( app lib1 ) (die die App mit der lib1 verknüpfen, aber das Header-Include-Problem nicht lösen) und so weiteradd_subdirectory( ../lib1 ) in verschiedenen Varianten in der CMakeLists.txt der App (die alle Fehler verursachten, die ich nicht beheben konnte) und auch find_package (was ich denke, ist der falsche Ansatz).

Also, wie kann ich dieses (ich denke einfach ...) Problem lösen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage