C++ 使文件夹中的每个文件都可执行的makefile

C++ 使文件夹中的每个文件都可执行的makefile,c++,makefile,C++,Makefile,下面是一个生成文件。请参阅一节,其中%.c是目标,其中一个依赖项是.psvn文件。我希望这个make文件遍历每个psvn文件并为其生成一个.c文件。如何更改makefile来执行此操作 CC = gcc CXX = g++ OPT = -g -Wall -O3 -Wno-unused-function -Wno-unused-variable -std=c++11 PSVNOPT = --no_state_map --no_abstraction --backwards_moves --hist

下面是一个生成文件。请参阅一节,其中%.c是目标,其中一个依赖项是.psvn文件。我希望这个make文件遍历每个psvn文件并为其生成一个.c文件。如何更改makefile来执行此操作

CC = gcc
CXX = g++
OPT = -g -Wall -O3 -Wno-unused-function -Wno-unused-variable -std=c++11
PSVNOPT = --no_state_map --no_abstraction --backwards_moves --history_len=0

psvn2c_core.c:
    cp ../psvn2c_core.c ./psvn2c_core.c

psvn2c_state_map.c:
    cp ../psvn2c_state_map.c ./psvn2c_state_map.c

psvn2c_abstraction.c:
    cp ../psvn2c_abstraction.c ./psvn2c_abstraction.c

%.c: %.psvn  psvn2c_core.c psvn2c_state_map.c psvn2c_abstraction.c
    ../psvn2c  $(PSVNOPT) --name=$(*F)  < $< > $@
    rm -f ./psvn2c_core.c ./psvn2c_state_map.c ./psvn2c_abstraction.c

.PRECIOUS: %.c

%.succ: %.c succ.c
    $(CC) $(OPT) succ.c -include $< -o $@

%.run: %.c run.cpp Node.cpp distribution.cpp
    $(CXX) $(OPT) run.cpp Node.cpp distribution.cpp -include $< -o $@

.PHONY : clean
clean:
    rm -f *.run *.o psvn2c_core.c psvn2c_state_map.c psvn2c_abstraction.c
CC=gcc
CXX=g++
OPT=-g-Wall-O3-Wno未使用的函数-Wno未使用的变量-std=c++11
PSVNOPT=--无状态映射--无抽象--向后移动--历史长度=0
psvn2c_core.c:
cp../psvn2c_core.c./psvn2c_core.c
psvn2c_state_map.c:
cp../psvn2c_state_map.c./psvn2c_state_map.c
psvn2c_abstraction.c:
cp../psvn2c_abstraction.c./psvn2c_abstraction.c
%.c:%.psvn psvn2c_core.c psvn2c_state_map.c psvn2c_abstraction.c
../psvn2c$(PSVNOPT)--名称=$(*F)<$<>$@
rm-f./psvn2c_core.c./psvn2c_state_map.c./psvn2c_abstraction.c
.珍贵:%
%.成功率:%.c成功率
$(CC)$(OPT)成功-包括$<-o$@
%.run:%.c run.cpp Node.cpp distribution.cpp
$(CXX)$(OPT)run.cpp Node.cpp distribution.cpp-包括$<-o$@
.假冒:干净
清洁:
rm-f*.run*.o psvn2c_core.c psvn2c_state_map.c psvn2c_abstraction.c

在第一个目标(
psvn2c_core.c:
)之前添加类似的内容:


完成了。调用
make all
(或
make
,因为
all
将是默认目标,因为它首先出现在makefile中),它将尝试构建所有
.c
文件。

将此特定规则作为仅应用于子文件夹的模板。
PSVN_FILES := $(wildcard *.psvn)
C_FILES := $(patsubst %.psvn,%.c,$(PSVN_FILES))

all: $(C_FILES)