サブディレクトリを持つプロジェクトのmakefileに問題があります。 プロジェクトのディレクトリツリーは以下である:Makefileサブディレクトリ再帰
project
├── Makefile
├── main.cpp
|
├── lib1
│ ├── lib1.cpp
│ ├── lib1.h
│ └── Makefile
|
├── lib2
│ ├── Makefile
│ ├── lib2_1.cpp
│ ├── lib2_1.h
| ├── lib2_2.cpp
│ └── lib2_2.h
|
├── lib3
│ ├── Makefile
│ ├── lib3.cpp
│ └── lib3.h
各サブディレクトリのメイクファイル(LIB1、LIB2 ...)は、このようなものです:
SRC_DIR = ./
BUILD_DIR = ./obj/
DEPS = lib1.o
all: $(BUILD_DIR)$(DEPS)
$(BUILD_DIR)%.o: $(SRC_DIR)%.cpp $(SRC_DIR)%.h
mkdir -p $(BUILD_DIR)
g++ --std=c++11 $< -c -o [email protected]
clean:
rm -fr $(BUILD_DIR)
私の問題は、次のとおりです。私はメイクを作成するにはどうすればよいですプロジェクトディレクトリにあるファイル、またはmakefile "root"? サブディレクトリ内のmakefileを再帰的に実行し、各サブディレクトリのobjフォルダにあるすべてのオブジェクトファイルをリンクするmakefileを作成できません。
私を助けることができますか?してください
あなたの問題を解決できないコメントだけ。それともそれは? ;)IMHO、各サブディレクトリにはlib1.oターゲットではなくアーカイブ/ soターゲットが必要です。 –
なぜ各サブディレクトリにはそのようなターゲットが必要ですか? –
archive/so、1つ選んでください。ビルドしようとしているものはわかりませんが、あなたのディレクトリはlib [123]という名前になっていますので、私はあなたがライブラリを構築していると仮定します。 –