2016-08-30 17 views
0

I持ってプロジェクトにプロジェクトから移動するとき、私のワークフローを簡素化し、次の別名:ENV変数とメイクファイルを指定して

alias mk='make -f ${ACTIVE_MAKEFILE}' 

いくつかの背景:メイクファイルはに関連する名前を持つ、すべて一緒に、別のディレクトリにあります彼らが参照するプロジェクト。彼らは私のプライベートのmakefileであり、私は私が実際に変更を追跡したい

  • レポにそれらをコミットしたくないので、彼らがしなければならない

    1. :ので、私はプロジェクトディレクトリに保管しないでくださいレポに入る。そのために私はumbrellaプロジェクトを持っています。

    これは問題なく動作していますが、完了を失う。 mk <TAB>を実行すると、使用可能なMakefileターゲットが表示されないため、エイリアスを使用すると実際にワークフローが効率が悪くなります。私が代わりに-fフラグを使用して、特定のメイクファイルを使用するように作る言って、私はちょうどそれを作る伝えるためのenv変数を設定することができると考え

    、何かのように:その後、

    export MAKEFILE=my-makefile 
    

    とコマンド:

    make 
    

    自動的に私のmy-makefileを使用します。コマンドは変更されていないので、オートコンプリートも機能し続けます。

    しかし、どちらか、そのオプションが存在しない、または私は(もしあれば)私はmakeを伝えるためにENVどの変数を設定することができMakefile

    を選択するために使用されていることを確認したenv変数の名前を見つけることができません特定のメイクファイルを使用しますか?元々のコメントで示唆

  • +0

    ディレクトリ外のディレクトリを指すディレクトリに、makefile(またはMakefile、GNUMakefile、または 'delavnog.mk'という名前のシンボリックリンクを使用してenv varを固定名に設定することもできます)関連するメイクファイルを作成し、VCSがローカルシンボリックリンクを無視して中央リポジトリにプッシュされないようにするだけです。 –

    +0

    そして別の方法として、別名 'dlnmk'の代わりにシェルスクリプトを使用します。これは、あなたのためにmakefileを見つけるための規則を適用します。オーバーヘッドは非常に小さく、思考をスクリプトにカプセル化するので、これ以上考える必要はありません。 –

    +0

    @JonathanLeffler:あなたの最初の提案は私のユースケースに合っています。ありがとう!それを回答として追加しますか?私は喜んで受け入れるでしょう。 – dangonfast

    答えて

    1

    つのオプション:

    1. あなたは固定、均一な名前で各ディレクトリにシンボリックリンクを作成すると考えられている(それはmakefileMakefileと呼ばれる、あるいはdelavnog.mkされる可能性があります)を指します関連性の高いディレクトリ外メークファイル?あなたのエイリアスは単にこの固定名を使用し、VCSがローカルのシンボリックリンクを無視して中央のリポジトリにプッシュされないようにします。

    2. 別名として、エイリアスの代わりにシェルスクリプト(おそらくdlnmk)を使用して、makefileの場所を特定するルールを適用します(スクリプトがmakefileの正しい名前と場所を正しい-fオプションを使用してmakeを呼び出します)。オーバーヘッドは非常に小さく、思考をスクリプトにカプセル化するので、これ以上考える必要はありません。

    2人のうち、私はおそらくスクリプトを使いますが、私は帽子のドロップでスクリプトを書いています。私は現在、$HOME/binディレクトリに約400個のスクリプトを持っており、関連するRCSディレクトリに保存されているほぼ900のスクリプトを持っています。私はこれをやっていましたが、Gitは最初の20年間はオプションではありませんでしたまだ存在しない)。

    関連する問題