关于Makefile的简单问题
我有一个用于 tiobench 的以下 Makefile。我写的。问题是,当我执行 make all
时,这不会将我留在安装目录中,因为它应该是这样。为什么 ?
# 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
I have a following Makefile for tiobench. I wrote it. The problem is, when I do make all
, this does not leave me in the install directory as it should. Why ?
# 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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
命令在子 shell 中运行。它们无法影响您运行
make all
的 shell 的当前工作目录the commands are run in a sub shell. they can't effect the current working directory of the shell from which you ran
make all