Makefile错误cd不能cd

时间:2013-06-29 12:17:50

标签: makefile gnu-make

我是makefile中的新手,我正在尝试更改makefile中的目录,我的问题是我无法更改这些目录并且我收到此消息:/ bin / sh:1:cd can不要cd到/ home /.......

我的代码是:

 # !/bin/sh


CHECK_LIB = true`
DIR= /home/me/dir/

bootstrap:
ifeq($(CHECK_LIB), true)
cd $(DIR); ./bootstarp -c ;
endif

我也试过$(shell cd $(DIR) ; ls ) 没有运气。 有一些好的意见我应该怎么做/尝试? os:ubuntu 12.04 TKS!

1 个答案:

答案 0 :(得分:1)

首先,你不需要/ bin / sh,因为Makefile不是shell脚本,然后由TAB预先写入规则。但是,条件不是规则的一部分,因此,它们不需要预先添加TAB。所以试试这个:

CHECK_LIB = true
DIR = /home/me/dir/

bootstrap:
ifeq($(CHECK_LIB), true)
<TAB>cd $(DIR) && ./bootstarp -c
endif

您也可以使用make shell命令,但不能使用规则:

ifeq($(CHECK_LIB), true)
BOOTSTRAP_OUT := $(shell cd $(DIR) && ./bootstarp -c)
endif

但我想这不是你想要的,因为它会在任何规则之前执行而不考虑任何依赖。这样你就可以获取makefile中文件/文件夹的列表:

FILELIST := $(shell cd $(DIR) && ls)
$(warning FILELIST is $(FILELIST))