user-0 提问: 多个文件夹的makefile怎么写啊

回复:
user: user-1
content: 引用 12 楼 imarshal 的回复:[quote=引用 11 楼 zilaishuichina 的回复:] 扩展名你自己取什么都好， 只要你开心就好，你也可以就叫默认的.out  哦，我还以为你是在用mingw编译真正的exe[/quote]  这个就是linux下的， 只不过是我这一个c++项目里的，我复制过来的， 你的如果是c项目的话，就把cpp换成c，g++换成gcc

user: user-0
content: 引用 11 楼 zilaishuichina 的回复:扩展名你自己取什么都好， 只要你开心就好，你也可以就叫默认的.out  哦，我还以为你是在用mingw编译真正的exe

user: user-1
content: 引用 10 楼 imarshal 的回复:[quote=引用 9 楼 zilaishuichina 的回复:] linux都是/，windows下面才是\\  什么意思，我看第一行是exe啊，linux下怎么叫这个[/quote]  扩展名你自己取什么都好， 只要你开心就好，你也可以就叫默认的.out

user: user-0
content: 引用 9 楼 zilaishuichina 的回复:linux都是/，windows下面才是\\  什么意思，我看第一行是exe啊，linux下怎么叫这个

user: user-1
content: 引用 8 楼 imarshal 的回复:[quote=引用 5 楼 zilaishuichina 的回复:]   OUT_PUT = XXX/OUT/XXX.exe  SRC_DIR_XXX1 = XXX/SRC/XXX1 SRC_DIR_XXX2 = XXX/SRC/XXX2  OBJ_DIR_XXX1 = XXX/OBJ/XXX1 OBJ_DIR_XXX2 = XXX/OBJ/XXX2  OBJS = $(patsubst $(SRC_DIR_XXX1)/%.cpp, $(OBJ_DIR_XXX1)/%.o, $(wildcard $(SRC_DIR_XXX1)/*.cpp)) \ 	$(patsubst $(SRC_DIR_XXX2)/%.cpp, $(OBJ_DIR_XXX2)/%.o, $(wildcard $(SRC_DIR_XXX2)/*.cpp))  INCLUDE_DIR = -IXXX/SRC/XXX1 -IXXX/SRC/XXX2  vpath %.h XXX/SRC/XXX1 vpath %.h XXX/SRC/XXX2  vpath %.cpp XXX/SRC/XXX1 vpath %.cpp XXX/SRC/XXX2  All: $(OBJ_DIR_XXX1) $(OBJ_DIR_XXX2) $(OBJS) 	g++ -o $(OUT_PUT) $(OBJS)  $(OBJ_DIR_XXX1) $(OBJ_DIR_XXX2): 	mkdir $@  $(patsubst $(SRC_DIR_XXX1)/%.cpp, $(OBJ_DIR_XXX1)/%.o, $(wildcard $(SRC_DIR_XXX1)/*.cpp)): $(OBJ_DIR_XXX1)/%.o: $(SRC_DIR_XXX1)/%.cpp 	g++ -c $< $(INCLUDE_DIR) -o $@  $(patsubst $(SRC_DIR_XXX2)/%.cpp, $(OBJ_DIR_XXX2)/%.o, $(wildcard $(SRC_DIR_XXX2)/*.cpp)): $(OBJ_DIR_XXX2)/%.o: $(SRC_DIR_XXX2)/%.cpp 	g++ -c $< $(INCLUDE_DIR) -o $@  clean: 	-rm -rf $(OUT_PUT) $(OBJ_DIR_XXX1) $(OBJ_DIR_XXX2)    多谢了，还有很多看不明白，不过这和linux下的规则有没有区别啊，怎么exe也是用的/，应该是\\啊[/quote]   linux都是/，windows下面才是\\

user: user-0
content: 引用 5 楼 zilaishuichina 的回复:  OUT_PUT = XXX/OUT/XXX.exe  SRC_DIR_XXX1 = XXX/SRC/XXX1 SRC_DIR_XXX2 = XXX/SRC/XXX2  OBJ_DIR_XXX1 = XXX/OBJ/XXX1 OBJ_DIR_XXX2 = XXX/OBJ/XXX2  OBJS = $(patsubst $(SRC_DIR_XXX1)/%.cpp, $(OBJ_DIR_XXX1)/%.o, $(wildcard $(SRC_DIR_XXX1)/*.cpp)) \ 	$(patsubst $(SRC_DIR_XXX2)/%.cpp, $(OBJ_DIR_XXX2)/%.o, $(wildcard $(SRC_DIR_XXX2)/*.cpp))  INCLUDE_DIR = -IXXX/SRC/XXX1 -IXXX/SRC/XXX2  vpath %.h XXX/SRC/XXX1 vpath %.h XXX/SRC/XXX2  vpath %.cpp XXX/SRC/XXX1 vpath %.cpp XXX/SRC/XXX2  All: $(OBJ_DIR_XXX1) $(OBJ_DIR_XXX2) $(OBJS) 	g++ -o $(OUT_PUT) $(OBJS)  $(OBJ_DIR_XXX1) $(OBJ_DIR_XXX2): 	mkdir $@  $(patsubst $(SRC_DIR_XXX1)/%.cpp, $(OBJ_DIR_XXX1)/%.o, $(wildcard $(SRC_DIR_XXX1)/*.cpp)): $(OBJ_DIR_XXX1)/%.o: $(SRC_DIR_XXX1)/%.cpp 	g++ -c $< $(INCLUDE_DIR) -o $@  $(patsubst $(SRC_DIR_XXX2)/%.cpp, $(OBJ_DIR_XXX2)/%.o, $(wildcard $(SRC_DIR_XXX2)/*.cpp)): $(OBJ_DIR_XXX2)/%.o: $(SRC_DIR_XXX2)/%.cpp 	g++ -c $< $(INCLUDE_DIR) -o $@  clean: 	-rm -rf $(OUT_PUT) $(OBJ_DIR_XXX1) $(OBJ_DIR_XXX2)    多谢了，还有很多看不明白，不过这和linux下的规则有没有区别啊，怎么exe也是用的/，应该是\\啊

user: user-2
content: 引用 6 楼 zhao4zhong1 的回复:一般都是一个项目一个makefile 比如： D:\MSDN98\SAMPLES\VC98\MFC\TUTORIAL>dir /b /s makefile D:\MSDN98\SAMPLES\VC98\MFC\TUTORIAL\AUTOCLIK\STEP1\MAKEFILE D:\MSDN98\SAMPLES\VC98\MFC\TUTORIAL\AUTOCLIK\STEP2\MAKEFILE D:\MSDN98\SAMPLES\VC98\MFC\TUTORIAL\AUTOCLIK\STEP3\MAKEFILE D:\MSDN98\SAMPLES\VC98\MFC\TUTORIAL\AUTODRIV\MAKEFILE D:\MSDN98\SAMPLES\VC98\MFC\TUTORIAL\CONTAIN\STEP1\MAKEFILE D:\MSDN98\SAMPLES\VC98\MFC\TUTORIAL\CONTAIN\STEP2\MAKEFILE D:\MSDN98\SAMPLES\VC98\MFC\TUTORIAL\ENROLL\STEP1\MAKEFILE D:\MSDN98\SAMPLES\VC98\MFC\TUTORIAL\ENROLL\STEP2\MAKEFILE D:\MSDN98\SAMPLES\VC98\MFC\TUTORIAL\ENROLL\STEP3\MAKEFILE D:\MSDN98\SAMPLES\VC98\MFC\TUTORIAL\ENROLL\STEP4\MAKEFILE D:\MSDN98\SAMPLES\VC98\MFC\TUTORIAL\SCRIBBLE\STEP1\MAKEFILE D:\MSDN98\SAMPLES\VC98\MFC\TUTORIAL\SCRIBBLE\STEP2\MAKEFILE D:\MSDN98\SAMPLES\VC98\MFC\TUTORIAL\SCRIBBLE\STEP3\MAKEFILE D:\MSDN98\SAMPLES\VC98\MFC\TUTORIAL\SCRIBBLE\STEP4\MAKEFILE D:\MSDN98\SAMPLES\VC98\MFC\TUTORIAL\SCRIBBLE\STEP5\MAKEFILE D:\MSDN98\SAMPLES\VC98\MFC\TUTORIAL\SCRIBBLE\STEP6\MAKEFILE D:\MSDN98\SAMPLES\VC98\MFC\TUTORIAL\SCRIBBLE\STEP7\MAKEFILE

user: user-2
content: 一般都是一个项目一个makefile

user: user-1
content: 引用 2 楼 imarshal 的回复:[quote=引用 1 楼 zilaishuichina 的回复:] All: 	cd XXX; make 	cd XXX; make 	cd XXX; make 	cd XXX; make  这样写感觉不太好啊，应该是只写一个makefile，就是不知道makefile中怎么处理cd的[/quote]     OUT_PUT = XXX/OUT/XXX.exe  SRC_DIR_XXX1 = XXX/SRC/XXX1 SRC_DIR_XXX2 = XXX/SRC/XXX2  OBJ_DIR_XXX1 = XXX/OBJ/XXX1 OBJ_DIR_XXX2 = XXX/OBJ/XXX2  OBJS = $(patsubst $(SRC_DIR_XXX1)/%.cpp, $(OBJ_DIR_XXX1)/%.o, $(wildcard $(SRC_DIR_XXX1)/*.cpp)) \ 	$(patsubst $(SRC_DIR_XXX2)/%.cpp, $(OBJ_DIR_XXX2)/%.o, $(wildcard $(SRC_DIR_XXX2)/*.cpp))  INCLUDE_DIR = -IXXX/SRC/XXX1 -IXXX/SRC/XXX2  vpath %.h XXX/SRC/XXX1 vpath %.h XXX/SRC/XXX2  vpath %.cpp XXX/SRC/XXX1 vpath %.cpp XXX/SRC/XXX2  All: $(OBJ_DIR_XXX1) $(OBJ_DIR_XXX2) $(OBJS) 	g++ -o $(OUT_PUT) $(OBJS)  $(OBJ_DIR_XXX1) $(OBJ_DIR_XXX2): 	mkdir $@  $(patsubst $(SRC_DIR_XXX1)/%.cpp, $(OBJ_DIR_XXX1)/%.o, $(wildcard $(SRC_DIR_XXX1)/*.cpp)): $(OBJ_DIR_XXX1)/%.o: $(SRC_DIR_XXX1)/%.cpp 	g++ -c $< $(INCLUDE_DIR) -o $@  $(patsubst $(SRC_DIR_XXX2)/%.cpp, $(OBJ_DIR_XXX2)/%.o, $(wildcard $(SRC_DIR_XXX2)/*.cpp)): $(OBJ_DIR_XXX2)/%.o: $(SRC_DIR_XXX2)/%.cpp 	g++ -c $< $(INCLUDE_DIR) -o $@  clean: 	-rm -rf $(OUT_PUT) $(OBJ_DIR_XXX1) $(OBJ_DIR_XXX2)

user: user-0
content: 引用 3 楼 zhao4zhong1 的回复:搜“跟我一起写makefile”  没讲到，不可能一个文件夹一个makefile啊

user: user-2
content: 搜“跟我一起写makefile”

user: user-0
content: 引用 1 楼 zilaishuichina 的回复:All: 	cd XXX; make 	cd XXX; make 	cd XXX; make 	cd XXX; make  这样写感觉不太好啊，应该是只写一个makefile，就是不知道makefile中怎么处理cd的

user: user-1
content: All: 	cd XXX; make 	cd XXX; make 	cd XXX; make 	cd XXX; make