Weil Opencv ein Projekt ist, dass 1. modular aufgebaut ist. D.h. man kann nur das verwenden was man braucht. Das ist für viele embedded Projekte wichtig
2. ist opencv Plattform übergreifen. Andere Plattformen haben andere Gepflogenheiten wie libraries heißen und vorallem auch wo diese liegen. Unter Windows gibt man z.B. häufig absolute Pfade an
3. Kann so ein Update von Opencv gemacht werden, das z.B. eine Library in 2 einzelne zerlegt oder weitere hinzufügt und dein Projekt baut immer noch ohne dass du etwas anpassen musst.

--> Deshalb pkgconfig aus einem Makefile oder via CMake aufrufen.