Vejam só, gostaria de criar um makefile para usar com o wingw e linux. Até ai td bem, porque ambos serão iguais, tirando apenas os diretórios das libs e dos includes.
O que eu to tentando ver é sobre os arquivos. Como é um projeto novo, eu estou ainda colocando novos arquivos a todo momento.
E no momento está assim o meu makefile:
- Código: Selecionar todos
# Project: Project1
# Compiler: Default GCC compiler
# Compiler Type: MingW 3
# Makefile created by wxDev-C++ 6.10.2 on 05/11/08 15:08
CPP = g++.exe
CC = gcc.exe
WINDRES = windres.exe
OBJ = Objects/MingW/x.o Objects/MingW/y.o Objects/MingW/z.o Objects/MingW/xx.o Objects/MingW/xy.o Objects/MingW/xz.o Objects/MingW/xx.res
LINKOBJ = Objects/MingW/x.o Objects/MingW/y.o Objects/MingW/z.o Objects/MingW/xx.o Objects/MingW/xy.o Objects/MingW/xz.o Objects/MingW/xx.res
LIBS = -L"C:/Program Files/Dev-Cpp/Lib" -mwindows -lwxmsw28 -lwxmsw28_gl -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxregex -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lodbc32 -lopengl32 -lmysql -g3
INCS = -I"include" -I"C:/Program Files/MySQL/MySQL Server 5.0/include"
CXXINCS = -I"C:/Program Files/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Program Files/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Program Files/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Program Files/Dev-Cpp/include/c++/3.4.2" -I"C:/Program Files/Dev-Cpp/include" -I"C:/Program Files/Dev-Cpp/" -I"C:/Program Files/Dev-Cpp/include/common/wx/msw" -I"C:/Program Files/Dev-Cpp/include/common/wx/generic" -I"C:/Program Files/Dev-Cpp/include/common/wx/fl" -I"C:/Program Files/Dev-Cpp/include/common/wx/gizmos" -I"C:/Program Files/Dev-Cpp/include/common/wx/html" -I"C:/Program Files/Dev-Cpp/include/common/wx/mmedia" -I"C:/Program Files/Dev-Cpp/include/common/wx/net" -I"C:/Program Files/Dev-Cpp/include/common/wx/ogl" -I"C:/Program Files/Dev-Cpp/include/common/wx/plot" -I"C:/Program Files/Dev-Cpp/include/common/wx/protocol" -I"C:/Program Files/Dev-Cpp/include/common/wx/stc" -I"C:/Program Files/Dev-Cpp/include/common/wx/svg" -I"C:/Program Files/Dev-Cpp/include/common/wx/xml" -I"C:/Program Files/Dev-Cpp/include/common/wx/xrc" -I"C:/Program Files/Dev-Cpp/include/common/wx" -I"C:/Program Files/Dev-Cpp/include/common" -I"C:/Program Files/MySQL/MySQL Server 5.0/include"
RCINCS = --include-dir "C:/PROGRA~1/Dev-Cpp/include/common"
BIN = Output/MingW/xx.exe
DEFINES = -D__WXMSW__ -D__GNUWIN32__ -D__WIN95__
CXXFLAGS = $(CXXINCS) $(DEFINES) -fno-exceptions -fno-pcc-struct-return -fstrict-aliasing -Wall -D__WXMSW__ -D__GNUWIN32__ -D__WIN95__ -fexpensive-optimizations -O3 -g3
CFLAGS = $(INCS) $(DEFINES) -fno-exceptions -fno-pcc-struct-return -fstrict-aliasing -Wall -D__WXMSW__ -D__GNUWIN32__ -D__WIN95__ -fexpensive-optimizations -O3 -g3
GPROF = gprof.exe
RM = rm -f
LINK = g++.exe
.PHONY: all all-before all-after clean clean-custom
all: all-before $(BIN) all-after
clean: clean-custom
$(RM) $(OBJ) $(BIN)
$(BIN): $(OBJ)
$(LINK) $(LINKOBJ) -o "Output\MingW\x.exe" $(LIBS)
Objects/MingW/x.o: $(GLOBALDEPS) x.cpp x.h
$(CPP) -c x.cpp -o Objects/MingW/x.o $(CXXFLAGS)
Objects/MingW/y.o: $(GLOBALDEPS) y.cpp y.h
$(CPP) -c y.cpp -o Objects/MingW/y.o $(CXXFLAGS)
Objects/MingW/z.o: $(GLOBALDEPS) z.cpp z.h
$(CPP) -c z.cpp -o Objects/MingW/z.o $(CXXFLAGS)
Objects/MingW/xx.o: $(GLOBALDEPS) xx.cpp xx.h
$(CPP) -c xx.cpp -o Objects/MingW/xx.o $(CXXFLAGS)
Objects/MingW/xy.o: $(GLOBALDEPS) xy.cpp xy.h
$(CPP) -c xy.cpp -o Objects/MingW/xy.o $(CXXFLAGS)
Objects/MingW/xz.o: $(GLOBALDEPS) xz.cpp xz.h
$(CPP) -c xz.cpp -o Objects/MingW/xz.o $(CXXFLAGS)
Objects/MingW/xx.res: Objects/MingW/xx.rc xx.rc
$(WINDRES) --input-format=rc -o Objects/MingW/xx.res $(RCINCS) Objects/MingW/xx.RC -O coff
Desculpem, mas modifiquei o nome por não poder expo-los. Mas o resto está inteiro ai. Tanto é que se alguém quiser usar é só usar!

A minha pergunta é:
Tem como eu deixar ele mais dinamico? Tipo, neste momento, para adicionar um arquivo a mais, eu preciso adicionar 2 linhas novas e ainda modificar mais duas linhas(OBJ e OBJLINK). Não tem como eu deixar ele com apenas 1 linha para a inclusão do arquivo e o mesmo se encarrega de fazer o resto? Pois as linhas são muito parecidas. Mas não sei como fazer o list.
Por sinal, existe como fazer um for e um if dentro do makefile? Por exemplo, para deixar apenas 1 makefile para lin e windows, poderia modificar apenas 1 linha dizendo qual é o OS e o mesmo já se encarregava de usar a correta linha. O que acham é possível?
Obrigado,
Joao