1
C++プロジェクト用に以下のディレクトリ構造を作成しようとしています。GNUワイルドカードを使って各ファイルを別々にビルドディレクトリにコンパイルします
├── Project
├── Makefile
│ ├── build/
│ ├── src
│ │ ├── include/
│ │ ├── cpp/
│ │ loader.s
│ │ linker.ld
私はまた、別のターゲットでビルドディレクトリとリンクに別々に各.cpp
ファイルをコンパイルしたいです。
私はこれを行うには、ワイルドカードとのトラブルを抱えています:
BUILD = ./build/
OBJS = $(patsubst src/cpp/%.cpp,build/%.o,$(wildcard src/cpp/*.cpp))
CPPFLAGS = -I ./src/include -Wfatal-errors -fno-use-cxa-atexit -nostdlib -fno-builtin -fno-rtti -fno-exceptions -fno-leading-underscore
$(BUILD)kernel.elf: $(BUILD)loader.o $(OBJS)
$(ARMGNU)-ld -T ./src/linker.ld -o [email protected] $^
$(ARMGNU)-objdump -D $(BUILD)kernel.elf > $(BUILD)kernel.list
$(BUILD)%.o: ./src/%.s
$(ARMGNU)-as $(AFLAGS) -c -o [email protected] $^
$(BUILD)%.o: ./src/cpp/%.cpp
$(ARMGNU)-gcc $(CPPFLAGS) -c -o [email protected] $^
リンクステップが空$(OBJS)
を取得するようbuild/%.o
年代が構築されることはありません。このための正しい構文は何ですか?
は、ビルド/ ''に 'BUILD'を設定してみてください。 '。/'接頭辞はルールマッチングを破る可能性があります。私も$(OBJS)が空ではないと思っています。あなたは$(info $(OBJS))でそれをチェックできます。 – xaizek
それはそれを正確にした!良いですね!私はそれを受け入れることができるように答えを加えてください。または、質問を削除する必要がありますか? –
私は本当にどのような条件で質問を削除すべきか分かりません。私はこれが答えがパスを一致させることでは初めてではないと思うので、誰かが同様の質問を見つけたら、それは重複として閉じられるかもしれません。 – xaizek