0

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

我的代码是:

 # !/bin/sh


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

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

我也试过$(shell cd $(DIR) ; ls ) 没有任何运气。有一些好的意见我应该怎么做/尝试?操作系统:ubuntu 12.04 Tks!

4

1 回答 1

0

首先,您不需要 /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))
于 2013-06-29T14:35:31.213 回答