19

を使用してファイルをサーバーにコピーしたいscp。しかし、メイクファイルで現在のフォルダー名を変数として使用したいと考えています。

を使用して現在のパスを取得していることはわかって$(CURDIR)いますが、ローカル パスはリモート サーバーでは同じではありません。

たとえば、私のパスは/Users/obstschale/Documents/Lab2/で、Lab2.tar を にコピーしたいとしますuser@server.au:/home/path/Lab2/

copy2server:
    echo $(CURDIR)
    scp Lab2.tar user@server.au:/home/path/{folder}

おそらく$(CURDIR)何かにパイプして、最後のフォルダーを見つける必要があります。

更新:$(CURDIR)は正しい変数です。$(CURID)少なくとも私にとってはうまくいきませんでした。

4

4 に答える 4

29

Sylvain が説明しているように、メイクファイル (GNU Make 3.81) のバックティック構文はうまくいきませんでした。どちらもうまくいかない場合は、使用してください

$(shell basename $(CURDIR))

それ以外の

`basename $(CURDIR)`
于 2013-03-17T10:53:11.520 に答える
8

私はこのルールを試しました:

test:
    @echo $(CURDIR)           # e.g. /tmp/foobar/blafoor/baz
    @echo $(notdir $(CURDIR))  # gives "baz" here.

これは私にとってはうまくいきました。

おそらくこれは動作するように意図されていませんnotdir

各ファイル名のディレクトリ以外の部分を抽出します。

于 2014-07-10T14:34:05.873 に答える
5

basenameシェル コマンドを使用して、 の最後のコンポーネント部分を抽出できます$(CURDIR)

copyserver:
   folder=`basename "$(CURDIR)"`; scp Lab2.tar user@server.au:/home/path/${folder}
于 2013-03-17T10:45:46.280 に答える