我是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!
答案 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))