som_pak-3.1-NAcMoS.tar.gz
ファイルをインストールしようとしているときに、以下のコマンドを使用しました。
$ tar xvf som_pak-3.1-NAcMoS.tar.gz
$ cd som_pak-3.1
$ cp makefile.unix makefile
$ make
$ cd ..
$ ln -s som_pak-3.1 $NACMOS_HOME/som_pak
しかし、make
コマンドを実行すると、次のエラーが発生します。
*セパレータがありません(8スペースの代わりにTABを意味しましたか?)。やめる。
他の回答が示唆したように、Makefileにはスペース文字ではなくタブ文字が必要です。私は.vimrc
すべてのタブをスペースで自動的に置き換えるように設定するため、個々のMakefileで逆の設定を手動で設定する必要があります。私が使用するvim
コマンドは次のとおりです。
:%s/^[ ]\+/\t/g
注:この特定の問題に対処する正しい方法は、1つのタブ文字を使用して各レシピの各アクション行がインデントされるようにMakefileを修正し、そのパッチを元の開発者に提出することです。
これは醜いハックであり、GNU make
の最近のバージョンで動作します(Makefileが一貫してタブではなくスペースを使用していることが問題である場合):
make '.RECIPEPREFIX+='
これにより、特別なGNU make
変数.RECIPEPREFIX
が単一のスペースに設定されます。この変数は、GNU make
3.82程度(2007)、レシピのアクション行の接頭辞として使用される文字を制御します。変数が空の場合(デフォルトの場合)、タブが使用されます。
例、
$ cat Makefile
all:
echo hello
$ make '.RECIPEPREFIX+='
echo hello
hello
例、>
での使用を示します(この場合はMakefile内の変数を設定します):
$ cat Makefile
.RECIPEPREFIX = >
all:
> echo hello
$ make
echo hello
hello
以下も参照してください。
make
マニュアル。