コンパイルするいくつかの.cファイルを生成するので、他のルールの前に実行する必要があるpythonスクリプトがあります。しかし問題がある。私のメイクファイルでコンパイルが必要な自動生成されたファイルの依存関係を見つけるためのmakeの設定方法
私が最初に実行するPythonスクリプトを必要とする、私は
SRC = autogenerated_file1.c autogenerated_file2.c
depend dep: .depend
include .depend
を依存にするルールを持っている。しかし、問題は、ファイルがメイクファイルが依存にするために実行されたときに存在してはいけないですどのように私は依存のインクルードの前に実行するルールを設定しますか?
ご協力いただければ幸いです。
私は私のメイクを簡素化し、それをここに提供:
SUBDIRS = ../modules/mod1 \
../modules/mod2 \
../modules/mod3
CFLAGS=-g -Wall
ARFLAGS=rs
CFLAGS:=$(CFLAGS) -I.
APPLICATION_FILES = main.c autogen1.c autogen2.c
APPLICATION_OBJ=$(APPLICATION_FILES:.c=.o)
-include $(APPLICATION_FILES:.c=.d)
.PHONY: dummy
dummy:
cd ../scripts && \
python autgen_files.py
%.o: %.c
$(CC) $(CFLAGS) -c $< -o [email protected]
clean :
rm -f *.o *.elf *.d
-for d in $(SUBDIRS); do (cd $$d; $(MAKE) clean); done
%.fin: dummy $(SUBDIRS) %.elf
$(SUBDIRS):
$(MAKE) -C [email protected]
%.d : %.c
$(CC) -MM $(CFLAGS) $*.c > $*.d
%.elf: $(APPLICATION_OBJ)
$(CC) -Tapp.ld $(CFLAGS) -o [email protected] $^
ここでの問題はautogen1.cとautogen2.cはメイクの開始時には利用できないです。私が上で提供したことをすれば、それは再帰的なmakeのループに巻き込まれます。
私はビルドを開始する方法は、Pythonスクリプトは、ファイル.depend
を生成する場合、(それは私の理解だが、私は完全にはよく分からない)
これは機能しません、私はMAKE_RESTARTSを取得し続け、ループでPythonスクリプトコードを呼び出し続けます... – Godspped
私のために働きます。あなたはmakeがGNU Makeであることを絶対に確信していますか?あなたのスクリプトは実際に '.depend'を生成しますか?おそらくあなたのスクリプトの日付は将来ですから、常に '.depend'より新しいですか?それは私がこの時点で持っているすべてのアイデアです... –