2012-07-18 14 views
5

Eksperymentuję z CMake nieco dla repozytorium C++, ale mam problemy z próbą ułatwienia budowania aplikacji przeciwko bibliotekom w tym samym drzewie źródłowym bez zbytniego dodatkowego kodu CMake.z łatwością dołącza nagłówki z zależności biblioteki w cmake

Układ drzewa źródłowego jest zasadniczo następujące:

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

Biblioteki są niezależne od siebie, a aplikacje mogą połączyć przeciwko jednej lub więcej bibliotek.

Obecnie mam główny plik CMakeLists.txt, który zawiera listę każdej aplikacji i biblioteki jako podkatalogu, tak więc jeśli biblioteka zostanie zmieniona, a aplikacja zostanie przebudowana, podobnie będzie z biblioteką. Działa to dobrze i program CMake łączy go bez konieczności określania miejsca, w którym znajduje się biblioteka, ale nie widzę sposobu na zrobienie czegoś podobnego w przypadku katalogów zawierających.

Czy istnieje typowy sposób radzenia sobie z tym? Wolałbym, aby CMakeLists.txt każdej aplikacji nie musiało ręcznie wskazywać ścieżki do bibliotek, których potrzebuje.

Odpowiedz

1

Jeśli nie obawiasz się udostępnienia większej liczby nagłówków niż jest to konieczne dla każdej aplikacji, możesz wyświetlić wszystkie katalogi lib w instrukcji INCLUDE_DIRECTORIES, np. w CMakeListst.txt dodając wszystkie podlisty aplikacji. Ale nie ma takiej koncepcji zarządzania "przynależnością" do wbudowanych folderów na cel.

Powiązane problemy