ソース私はサブフォルダ内のすべての* .cファイルをコンパイルするメイクファイルを持って作ります。私の.cファイルが、私はいつもCOBJのために行うには、」何も...任意のアイデア?は、サブフォルダの質問
答えて
あなたのパターンルールcsrc/%.o: %.c
並進例えばfoo.c
にcsrc/foo.o
を見ていないフォルダ「CSRC」に
objects := $(addprefix, csrc/, $(patsubst %.c,%.o,$(wildcard *.c)))
cobj: $(objects)
$(objects): csrc/%.o: %.c
$(CC) -c $< -o [email protected]
ないと言うことができますcsrc/foo.c
。おそらく、それはあなたが望むものではありません。
はなぜちょうど%.o: %.c
?
何オリCharlesworthが言ったことは正しいことではないが、別の間違いがあります。wildcar d関数は現在のディレクトリのみをチェックします。今のように、$(objects)
は空になります(私は現在の親ディレクトリにソースファイルがないと仮定します)。 $(wildcard csrc/*.c)
$(ワイルドカードcsrc/*。c) - それはチケットです。ありがとうございました。 – user270398
フォルダ名に「ワイルドカード」とスペースが含まれているとは何ですか? $(ワイルドカードcsrc/*。c)は動作しますが、$(ワイルドカードcsrc 1.0/*。c)は動作しません。フォルダ名に空白を含めるために、$(ワイルドカードcsrc \ 1.0/*。c)、または$(ワイルドカード "csrc 1.0"/*。c)、またはその他の通常のやり方はありません... – user270398
@ user270398:一般に、この場合、ワイルドカード関数は、これを2つの独立したパターン 'csrc'と' 1.0/*。c'とみなし、別々にマッチしないようにしようと試みます。私は空間をエスケープすることは可能だっただろうと推測したかもしれないが、明らかにそうではない。フォルダとファイル名のスペースが悪い理由である(多くの)理由の1つ。 – eriktous
'foo.o'を親ディレクトリまたは' csrc/'に入れたいですか? – Beta
はcsrc /にとどまり、おそらくそれほど重要ではありません....ありがとうございます – user270398