【发布时间】:2017-01-04 21:02:50
【问题描述】:
我已经创建了一个父 makefile。如下:
SHELL = /bin/bash
HOMEDIR = $(shell pwd)
PKGNAM = PARAMETIS
override VERSION = 4.0.3
YESDIR = $(shell echo $(@:install-%=%) | tr A-Z a-z)
NODIR = $(shell echo $(@:clean-%=%) | tr A-Z a-z)
install:
$(MAKE) install-$(VERSION)
install-%:
@if [ ! -e $(YESDIR) ]; then \
echo "Library $(PKGNAM) Version=$(YESDIR) does not exist"; \
elif [ -e $(YESDIR)/Install.sh ]; then \
echo "Installing $(PKGNAM) version=$(YESDIR)" ; \
cd $(YESDIR) ;\
$(SHELL) Install.sh $(HOMEDIR) 1 ;\
elif [ -e $(YESDIR)/Makefile ]; then \
cd $(YESDIR); \
$(MAKE); \
else \
echo "Installation instruction for $(@:install-%=%) Version=$(YESDIR) does not exist"; \
fi;
clean:
@$(MAKE) clean-$(VERSION)
clean-%:
@if [! -e ${NODIR} ]; then ;\
echo "Library does not exist $(PKGNAM) version=$(NODIR)" ; \
else \
cd $(NODIR) ;\
echo "Installing $(PKGNAM) version=$(NODIR)" ; \
$(SHELL) Install.sh $(HOMEDIR) 0 ;\
fi;
这个makefile在每个版本的库目录中调用不同的bash文件来构建它们,如果我从终端调用它,bash文件可以成功构建每个库,但是当我从我的make文件中调用它们时,
进行安装
在它执行 install.sh 并构建库之后,我得到了这个错误
没有将目标设为“w”的规则。停下来。
知道为什么会发生这种情况,我该如何摆脱它?
如果有帮助,这里是 bash 文件:
if (test $2 = 1) then
make --silent -f Makefile config prefix=$1/exec
make --silent -f Makefile
make --silent -f Makefile install
elif (test $2 = 0) then
make --silent -f Makefile clean
fi
谢谢
【问题讨论】:
-
生成目标的命令必须缩进。
-
它们在makefile中,我不知道如何缩进它们。
-
粘贴正确缩进的代码,用鼠标标记,输入Ctl-k。
-
现在格式正确,有什么解决办法吗?