我是makefile的新手,我正在尝试更改makefile中的目录,我的问题是我无法更改这些目录,并且我收到以下消息: /bin/sh:1: cd无法cd to /home/.......
我的代码是:
# !/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!
发布于 2013-06-29 22:35:31
首先,您不需要在顶部使用/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))https://stackoverflow.com/questions/17380087
复制相似问题