私はいくつかのC++クラスを持っています。それぞれがメイクファイル、テスト目的のtest.cppなどを含む独自のフォルダーに入っています。
Main folder
|-> Class1 folder
|-> Class2 folder
|-> Class2.1 folder
|-> Class2 folder
これらのクラスを含める必要があるメイン プロジェクトがあります。すべてのサブ makefile をメインの makefile に含めようとしています。
「INCLUDE POO/makefile」を試してみましたが、この解決策には 2 つの問題があります。
- サブメイクファイルのパスが正しくないため、ファイルが見つかりません (「ターゲット 'Vector3D.cpp' をビルドするルールがありません」)。
- おそらくパスの問題が原因で、「test.cpp」ファイルが上書きされます。(「警告: ターゲットのレシピを上書きしています...」)
すべての makefile を独立させたいので、クラス フォルダーを新しいプロジェクトにコピー/貼り付けしても、それは引き続き機能します。または、makefile を変更せずに単独で実行することもできます。
問題は、makefile を別の makefile に (正しく) インクルードする方法です。
例、テスト目的のみ。
メインのメイクファイル (簡略化)
include Vector3D/makefile
include Color/makefile
CPP = g++
CXXFLAGS = $(CXXINCS) -Wall -O0
all: main
main: main.o Vector3D.o Color.o
$(CPP) main.o Vector3D.o Color.o -o main
main.o: main.cpp
$(CPP) -c main.cpp -o main.o $(CXXFLAGS)
サブ makefile の例 (簡略化)
#Vector3D
CPP = g++
CXXFLAGS = $(CXXINCS) -Wall -O0
all: test
test: Vector3D.o test.o
$(CPP) Vector3D.o test.o -o test
Vector3D/test.o: test.cpp
$(CPP) -c test.cpp -o test.o $(CXXFLAGS)
Vector3D.o: Vector3D.cpp Vector3D.hpp
$(CPP) -c Vector3D.cpp -o Vector3D.o $(CXXFLAGS)
Vector3D よりも Color/makefile に似ています。