プロジェクトのディレクトリ strcuture をもう少し整理するために、同じモジュールのソースファイルを別のディレクトリに配置したいと考えています。オブジェクトファイルはすべてobj
ディレクトリに配置する必要があります。ソースツリーをobjディレクトリにも複製したくないので、ソースファイルからディレクトリ部分を削除してobjパスにする方法を探しています。
したがって、これが現在のバージョンであり、obj ディレクトリがソース ディレクトリと同じレイアウトである必要があります。
OBJDIR:= obj
SRCDIR:= src
SRC := propertyfile/propertyfile.cpp otheritems/file.cpp otheritmes/subtree/bla.cpp
OBJ := $(patsubst %.cpp, $(OBJDIR)/%.o, $(SRC))
より明確にするために:私のソースは次の場所にあります
src/propertyfile/*
src/otheritems/*
src/otheritmes/subtree/*
等々。
objfiles はすべて、中間ディレクトリなしで obj にある必要があります。上記の patsubst では、単に src 部分を obj に置き換えて iesrc/propertyfile/propertyfile.cpp
にしますobj/propertyfile/propertyfile.o
が、私が望むのはobj/propertyfile.o
これらのパターンがどのように機能し、どのパラメーターを受け入れるかについての適切な説明へのポインターも役立ちます。
アップデート:
これまでのところ、次の行を使用して少し進歩しました。
OBJ := $(addprefix obj/,$(notdir $(SRC:.cpp=.o)))
ただし、名前が一致しないため、ビルド ルールが機能しなくなったため、ビルド ルールでも機能するパターンが必要になります。