Hey,
Ostatnio podczas pisania unit testów naszło mnie na refleksje i mam przeczucie, że spierniczyłem design projektu, ale do rzeczy. Stworzyłem strukturę gdzie foldery są podzielone na funkcjonalności, a w każdym takim folderze są pliki źródłowe i CMakeLists tworzący z nich bibliotekę, która linkowana jest do głównego targetu projektu. Załóżmy, że istnieje klasa MqttClient i klasa MqttConnection, która impelemntuje interfejs. W unit testach tworzę mocka tego interfejsu co jest oczywiste, ale pojawia
Ostatnio podczas pisania unit testów naszło mnie na refleksje i mam przeczucie, że spierniczyłem design projektu, ale do rzeczy. Stworzyłem strukturę gdzie foldery są podzielone na funkcjonalności, a w każdym takim folderze są pliki źródłowe i CMakeLists tworzący z nich bibliotekę, która linkowana jest do głównego targetu projektu. Załóżmy, że istnieje klasa MqttClient i klasa MqttConnection, która impelemntuje interfejs. W unit testach tworzę mocka tego interfejsu co jest oczywiste, ale pojawia
addlibrary(nazwafolderu ...)
targetincludedirectories(nazwafolderu ${CMAKECURRENTSOURCEDIR})
Niestety to nie działa. W tutorialach na internecie widziałem że ludzie tworzą podfoldery include I tam wrzucają wszystkie headery w danym folderze, a
@asdxmee: to jest jedno z rozwiązań, najczęściej stosowane. można zrobić "internalheaders" z PRIVATE i "externalheaders" z PUBLIC
@asdxmee: teoretycznie kompilatorowi krócej zajmie znalezienie "dupa.h"
Poza tym publiczne nagłówki łatwiej się używa jeżeli leżą w mocno pogrupowanym i posegregowanym drzewie katalogów, wtedy łatwiej znaleźć odpowiedni plik używając cudzej biblioteki. Osobiście wolę w src trzymać jeden wielki wór, a w include takie