메이크 파일에서 파일 이름 목록을 변수 이름 집합으로 변환하는 방법은 무엇입니까? 예를 들어파일 이름 목록을 메이크 파일에서 변수 이름 집합으로 변환하는 방법
, 나는 파일 이름의 목록을 변수로 설정합니다
filename := file1 file2 file3 ...
file1 := opt1
file2 := opt2
file3 := opt3
...
...
을 지금은 변수의 새로운 만들려면 :
file1_opt := $(file1)
file2_opt := $(file2)
file3_opt := $(file3)
...
...
어떻게 메이크에서 그것을 할 수 있습니까?
배쉬를 들어이 간단하다
for name in $(filenames)
do
$($(subst .,_,$(subst /,_,name)))_opt := $($(subst .,_,$(subst /,_,name)))
done
하지만 어떻게 메이크에 그것을 만들?
예 :
./module/files.mk
C_SRC := a_file.c b_file.c
CPP_SRC := c_file.cpp d_file.cpp
a_file_c := -O2
b_file_c := -DN_DEBUG
./Makefile
....
SRCDIR := module
include makef.mk
....
$(C_OBJ) : $(OBJDIR)/%.o : %.c
$(CC) -c $(C_FLAGS) $(C_FLAGS_$(subst .,_,$(subst /,_,$<))) $< -o [email protected]
....
./makef.mk
SAVE_C_SRC := $(C_SRC)
SAVE_CPP_SRC := $(CPP_SRC)
C_SRC :=
CPP_SRC :=
include $(SRCDIR)/files.mk
MK_DIRS += $(OBJDIR)/$(SRCDIR)
----[ problem site ]----
# this work for bash but not for make
for name in $(C_SRC)
do
C_FLAGS_$(SRCDIR)_$($(subst .,_,$(subst /,_,name))) := $($(subst .,_,$(subst /,_,name)))
$($(subst .,_,$(subst /,_,name))) :=
done
----[ end of problem site ]----
SAVE_C_SRC += $(C_SRC:%=$(SRCDIR)/%)
SAVE_CPP_SRC += $(CPP_SRC:%=$(SRCDIR)/%)
C_SRC := $(SAVE_C_SRC)
CPP_SRC := $(SAVE_CPP_SRC)
리아
이 목록을 기반으로 새 메이크 파일을 만들 때 스크립트를 사용할 수 없습니까? –