Struktura katalogów w projekcie

Czasami istnieje potrzeba pisania jednego projektu w różnych środowiskach programistycznych, tym bardziej jeśli korzystamy z systemu kontroli wersji (np. SVN,  GIT) i chcemy skompilować projekt z założenia multiplatformowy na innym systemie operacyjnym. W takim przypadku fajnie by było, aby projekt miał strukturę katalogów niezależną od IDE, ale jak powinna ona wyglądać? Według mnie tak:

  • include
  • src
  • workdir
  • projects
  • libs

Katalog include powinien zawierać tylko pliki nagłówkowe, które będą dołączane w innych projektach. Tak naprawdę jest on tutaj tylko ze względu na projekt biblioteki (np. lib, dll, itp.), więc w przypadku kompilacji do pliku wykonywalnego, można ten katalog pominąć, wtedy wszystkie pliki nagłówkowe powinny znaleźć się w katalogu src. Katalog src jest przeznaczony tylko dla plików źródłowych bieżącego projektu, które mogą być uporządkowane w różnych podkatalogach. W workdir powinna się znaleźć cała struktura katalogów docelowego programu, czyli wszystkie pliki i katalogi, które będą dostarczane ze skompilowanym plikiem wykonywalnym. Katalog libs służy do przechowywania wszystkich dołączanych bibliotek używanych w aplikacji. Dla każdej z nich powinien znaleźć się odpowiedni katalog a w nim jeszcze dwa – include i lib. Ostatnim katalogiem jest projects, który jest przeznaczony do przechowywania plików projektów dla każdego IDE (oczywiście każdy w osobnym katalogu).

Taka struktura jest przejrzysta i niezależna od stosowanego IDE. Zresztą nie jest to mój pomysł, ponieważ jest on od dawna stosowany w środowiskach linuksowych, ale w nieco innej postaci. Kluczowe jest po prostu trzymanie plików źródłowych w jednym katalogu niezależnym od stosowanego środowiska.

2 Comments

  1. Xion:

    workdir zazwyczaj nazywa się ‘dist’. Poza tym zapominasz jeszcze o katalogu ‘bin’, gdzie trzymane są pliki binarne z bieżącej kompilacji. Do katalogu ‘projects’ też nie jestem specjalnie przekonany; takie pliki (np. .project w przypadku eclipse) zazwyczaj widuję po prostu w katalogu głównym.

    Ogólnie jednak zamysł jest dobry :)

  2. Netrix:

    Ja akurat wole trzymać pliki binarne w katalogach z projektem, zwłaszcza jak mam np. w VS (kompilacje debug + release) * (kompilacja z SSE + bez SSE) * (kompilacja x64 + x86). Z katalogiem ‘projects’ aktualnie mam dokładnie tak jak mówisz, natomiast mając kilka tych katalogów wolałem je wpakować do jednego folderu dzięki czemu na SVN jest porządek.

Leave a comment