0

私はメイクファイルが初めてで、メイクファイル内のディレクトリを変更しようとしています。私の問題は、これらのディレクトリを変更できず、次のメッセージが表示されることです: /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 ) 何の運もありませんでした。どうすればよいか/試してみるべきか、良い意見がありますか? OS: ubuntu 12.04 Tks!

4

1 に答える 1

0

Makefile はシェル スクリプトではないため、先頭に /bin/sh を追加する必要はありません。ルールは先頭に 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

しかし、ルールの前に実行され、依存関係を考慮しないため、それはあなたが望むものではないと思います。このようにして、メイクファイルのファイル/フォルダーのリストを取得できます。

FILELIST := $(shell cd $(DIR) && ls)
$(warning FILELIST is $(FILELIST))
于 2013-06-29T14:35:31.213 に答える