Linux で C++ のプログラミングを学んでいますが、次の問題があります。
main.cpp、model.cpp、view.cpp、controller.cpp の 4 つのファイルがあり、それぞれ (main を除く) に独自のヘッダー ファイルがあります。main.cpp には、model.h、view.h、および controller.h が含まれ、view.h には、それにのみ関連するその他のライブラリが含まれます (グラフィック ライブラリを実行するために必要です)。これらのライブラリは別のフォルダーにあり、独自に他の依存関係があります (そのため、それらを移動したくありません)。したがって、私のメイクファイルは次のようになります。
model: model.cpp model.h
g++ -c model.cpp
view: view.cpp view.h
g++ -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I.. -c view.cpp
controller: controller.cpp
g++ -c controller.cpp
main: main.cpp
g++ -c main.cpp
また、すべてのファイルをリンクする行もあります (これは Mac で作成し、Raspberry Pi の画面からコピーしているため、追加しませんでした)。
私の問題は、それらをコンパイルしようとすると、メインを除いてすべてが機能し、次のように表示されることです。
In file included from main.cpp:6:0:
view.h:4:23: fatal error: VG/openvg.h: No such file or directory
compilation terminated.
make: *** [main] Error 1
私が理解していることから、「ビューを作成」でビューをコンパイルすると、それが見なければならないパスがあるため、問題なく含まれているファイルを見つけることができますが、「メインを作成する」にはそれらのパスがないため、 openvg.h を探す場所がわかりません。問題は、パスをメインに追加すると、ライブラリの内部に複数の定義があることがわかります...助けはありますか?