W moim miejscu mamy dużą bazę kodu C++ i myślę, że jest problem z wykorzystaniem plików nagłówkowych.Zależności między nagłówkami plików między modułami C++
Istnieje wiele projektów Visual Studio, ale problem jest w koncepcji i nie jest związany z VS. Każdy projekt jest modułem realizującym określoną funkcjonalność. Każdy projekt/moduł jest skompilowany do biblioteki lub pliku binarnego. Każdy projekt ma katalog zawierający wszystkie pliki źródłowe - * .cpp i * .h. Niektóre pliki nagłówkowe są API modułu (mam na myśli podzbiór plików nagłówkowych deklarujących API utworzonej biblioteki), niektóre są wewnątrz niego.
Teraz na problem - kiedy moduł A musi pracować z modułem B, to A dodaje katalog źródłowy B, aby uwzględnić ścieżkę wyszukiwania. Dlatego wszystkie nagłówki wewnętrznych modułów B są widziane przez A w czasie kompilacji.
Jako efekt uboczny programista nie musi koncentrować się na dokładnym API każdego modułu, co i tak uważam za zły nawyk.
Rozważam opcje, jak powinno być na pierwszym miejscu. Pomyślałem o stworzeniu w każdym projekcie dedykowanego katalogu zawierającego tylko pliki nagłówkowe interfejsu. Moduł klienta, który chce korzystać z modułu, może zawierać tylko katalog interfejsu.
Czy to podejście jest w porządku? W jaki sposób problem rozwiązany jest na twoim miejscu?
UPD Na moim poprzednim miejscu, opracowanie zostało wykonane na Linux zg ++/gmake a my rzeczywiście używany do instalowania plików API nagłówka do wspólnego katalogu jest kilka odpowiedzi zaproponować. Teraz mamy projekt Windows (Visual Studio)/Linux (g ++) używający cmake do generowania plików projektu. Jak wymuszam instalację preampu plików nagłówkowych API w Visual Studio?
Dzięki Dmitry
Uważam, że Google umieszcza wszystkie swoje wewnętrzne nagłówki w folderze o nazwie internal. – xian