PDA

View Full Version : [Makefile] Creare una cartella


fuocofatuo
03-03-2010, 13:32
Ho scritto il makefile in maniera che tutti i file generati durante la costruzione del progetto siano messi in una cartella apposita, chiamata Build. In particolare:
install: all
install $(TARGET) `${TULIP_CONFIG} --pluginpath`

all: $(TARGET)

clean :
rm -f $(BUILD_DIR)*

$(TARGET): $(QRCS_SRCS) $(OBJS)
$(CXX) $(OBJS) -o $@ $(LDFLAGS) $(LIBS)

$(BUILD_DIR)%.o: %.cpp
$(CXX) -c $(CXXFLAGS) -o $@ $<

$(BUILD_DIR)%.cpp: %.qrc
rcc -name $(PLUGIN) -o $@ $<

$(BUILD_DIR)%.d: %.cpp
$(CXX) -M $(CXXFLAGS) $< | sed 's!\($*\)\.o[ :]*!\1.o $@ : !g' > $@; [ -s $@ ] || rm $@
Quindi, dal file pippo.cpp ottengo il file Build/pippo.d, Build/pippo.o e via discorrendo.

L'unico problema è che la directory Build dev'essere già presente, altrimenti non si riesce a far nulla. Come posso fare a creare la cartella (qualora non esista) quando viene chiamato make?

Torav
03-03-2010, 20:55
fai una regola che ti crea la dir:


makedir:
mkdir -p $(BUILD_DIR)


e poi la aggiungi alla regola "principale":


$(TARGET): makedir $(QRCS_SRCS) $(OBJS)

fuocofatuo
04-03-2010, 07:44
Grande. Avevo provato senza il -p, con soluzioni più complicate per testare se la directory esisteva, ma non funzionava.

Ora però ho un altro problema. Le regole dei .d mi partono prima della creazione della directory. Come posso fare per impedirlo?