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?