Cześć,

tworzę pierwszy projekt bazujący na CMake'u. Strukturę mam mniej więcej taką:

root
   |---- gui
   |      | ----- MainWindow.h/cpp/ui
   |      | ----- CMakeLists.txt
   | ---- domain 
   |      | ----- (...nie ważne co..) 
   | ---- main.cpp
   | ---- CMakeLists.txt

Na początku miałem wszystko na jednym poziomie, co wiadomo, było tylko tymczasowe. Chcę sobie to teraz ustrukturyzować, lecz pojawiają się problemy, mianowicie:

root/CMakeLists.txt*

cmake_minimum_required(VERSION 3.15)

project(NewProject LANGUAGES CXX)
add_subdirectory(gui)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(Qt5 COMPONENTS Network Widgets LinguistTools REQUIRED)

add_executable(NewProject 
    main.cpp
    )

target_link_libraries(NewProject PRIVATE Qt5::Widgets Qt5::Network)
target_link_libraries(gui)

root/gui/CMakeLists.txt

cmake_minimum_required(VERSION 3.15)
project(gui)

set(LIB_HEADERS MainWindow.h MainWindow.ui)
set(LIB_SOURCES MainWindow.cpp)
add_library(gui STATIC ${LIB_SOURCES} ${LIB_HEADERS})

Problem polega na tym, że od momentu przeniesienia MainWindow do /gui, straciłem dostęp do bibliotek np. Qt5::Widgets, przez co MainWindow nie może się skompilować, jak również nie mam odniesień do klas z katalogu /root/domain/...

Można by w gui/CMakeLists.txt użyć find_package, ale czy to jest dobra droga? Jak sensownie zrobić taką reorganizacje kodu, żeby była podzielona na podrzędne CMakeLists?