1

プロジェクトのディレクトリ 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)))

ただし、名前が一致しないため、ビルド ルールが機能しなくなったため、ビルド ルールでも機能するパターンが必要になります。

4

1 に答える 1

0

これを実現する 1 つの方法は、vpathを使用することです。

別の方法、次のようなもの:

OBJ := ${SRC:%.cpp=${OBJDIR}/%.o}
于 2013-04-19T08:55:17.130 に答える