2010-12-04 128 views
0

我有一個關於tiobench的以下Makefile。我寫的。問題是,當我做make all時,這並不會讓我進入安裝目錄,因爲它應該如此。爲什麼?關於Makefile的簡單問題

# Makefile for tiotest 

#include $(shell while [ "`pwd`" !=/-a \! -r options.mk ]; do cd .. ; done ; pwd)/options.mk 

#CFLAGS=-O3 -fomit-frame-pointer -Wall 
CFLAGS=-O2 -Wall 

#DEFINES=-DUSE_MMAP 
#-DUSE_MADVISE 

# This enables support for 64bit file offsets, allowing 
# possibility to test with files larger than (2^31) bytes. 

#DEFINES=-DLARGEFILES 

#DEFINES= 

MODULE=tiotest 
PROJECT=tiobench 
# do it once instead of each time referenced 
VERSION=$(shell egrep "tiotest v[0-9]+.[0-9]+" tiotest.c | cut -d " " -f 7 | sed "s/v//g") 
DISTNAME=$(PROJECT)-$(VERSION) 

INSTALL := $(CURDIR)/install 
INSTALL_DIR := $(INSTALL)/test/bin 
BOM := $(CURDIR)/BOM 
BUILDRESULTS := $(CURDIR)/buildresults 
MODULE := tiotest 

build: $(MODULE) 

crc32.o: crc32.c crc32.h 
    $(CC) -c $(CFLAGS) $(DEFINES) crc32.c -o crc32.o 

tiotest.o: tiotest.c tiotest.h crc32.h crc32.c Makefile 
    $(CC) -c $(CFLAGS) $(DEFINES) tiotest.c -o tiotest.o 

$(MODULE): tiotest.o crc32.o 
    $(CC) -o $(MODULE) tiotest.o crc32.o -lpthread 
    @echo 
    @echo "./tiobench.pl --help for usage options" 
    @echo 

configure: 

clean: clean-install 
    rm -f tiotest.o crc32.o $(MODULE) core 

distclean: clean 

clean-install: 
    -rm -rf $(INSTALL) $(BUILDRESULTS) 

install: clean-install build 
    mkdir -p $(INSTALL_DIR) 
    cp $(MODULE) $(INSTALL_DIR) 
    #$(STRIP) $(INSTALL_DIR)/$(MODULE) 
    @echo install tree is in $(INSTALL) 

buildresults: install 
    mkdir $(BUILDRESULTS) 
    cd install && tar cf - `cat $(BOM)` | (cd $(BUILDRESULTS) ; tar xfp -) 
    @echo buildresults tree is in $(BUILDRESULTS) 

all: distclean configure build install buildresults 

.PHONY: build clean-install install buildresults clean distclean all 
+0

你是什麼意思的「不要讓我在安裝目錄中」? – vanza 2010-12-04 06:39:23

+0

我的意思是我應該在`make all`後留在./install中。 – abc 2010-12-04 06:44:48

回答

2

該命令在子shell中運行。他們不能影響你運行的shell的當前工作目錄make all