Jeśli spojrzeć na dużych projektów open source w C lub C++, można znaleźć szeroką gamę sposobów organizowania źródła. Jednak kilka typowych scenariuszy polega na użyciu struktury katalogów module
(lub component
) z src
i include
w obrębie każdego module
. Ewentualnie możesz mieć to na odwrót i używać src\module
i include\module
.
Jeśli masz kod testowy, który często przechodzi w module\test
lub test\module
.
Jednym z interesujących wyzwań przy większych projektach C++ jest "gdzie umieścić pliki nagłówkowe, które są współużytkowane między komponentami". Czasami jest include\public
(lub public\include
), czasami są one z ich odpowiednim składnikiem.
Może być całkiem użyteczne wyodrębnienie części komponentu, które są "dostępne do użycia przez innych" w porównaniu z komponentami, które są używane tylko wewnętrznie - ponieważ coś wewnętrznego można łatwo zmienić bez żadnego lub minimalnego wpływu na inne. komponenty, gdzie coś, co jest "widoczne" poza komponentem, będzie wymagało większej ostrożności - co się stanie, jeśli komponent zostanie opublikowany jako biblioteka DLL i zaktualizujesz bibliotekę DLL bez ponownej kompilacji źródła w częściach, które używają komponentu [jeśli masz stronę trzecią Klienci, którzy nie mają kodu źródłowego (lub przynajmniej nie będą go regularnie budować), niekoniecznie chcesz zmusić ich do odbudowy swoich projektów za każdym razem, gdy wprowadzisz jakąś zmianę.
W przypadku dużych projektów, namespaces
służy do zapobiegania namoklasom.
Sposób, w jaki się to robi, to kwestia osobistych preferencji. Mam tendencję do umieszczania powiązanych plików w oddzielnych folderach. podobnie jak oddzielne pakiety. Widziałem projekty z setkami plików źródłowych w tym samym folderze i wszystkim pomiędzy. –
Zazwyczaj widzę pojedynczy katalog 'src /', z tym podfolderem, który oznacza twój "pakiet". Tak więc pakiet 'com.mydomain.server.login' na przykład w Javie może się równać' src/server/login' w C++. To naprawdę kwestia preferencji. Widziałem też ludzi, którzy dzielili pliki nagłówkowe na ścieżkę 'include /', aby zachować je oddzielnie od plików źródłowych. – crush
Podobne pytanie: http://stackoverflow.com/questions/718126/best-folder-structure-for-c-cross-platform-library-and-bindings –