私は汎用のMakefile
を持っています。これらのターゲットはプロジェクト全体で再利用されます。ほとんどの場合、私のプロジェクトはトルコ語で行われていたので、ほとんどのターゲット名にトルコ語を使用しました。これは、実際の完成したファイルを呼び出す必要があるため意味をなさないので、Makefile
も結果を公開します。一般的なメイクファイルでファイル名のセグメントをローカライズ
たとえば、私のリポジトリにソースbook.md
があるとします。付属のMakefile
にはレシピがあるので、make book-a4.pdf
を実行してA4サイズのタイプセットの本を入手できます。しかし、もっと多くのものがあります。たとえば、make book-a4-cilt.pdf
は適切なサイズのカバーを作成するか、make-octavo-3b-on.png
はOctovoサイズの本の3Dモデルをレンダリングします。
これは素晴らしいことですが、Makefile
をツールキットとして使用することを許可します。これは他の言語でも動作する必要があります。ルールのベース名はプロジェクトに依存するため、問題はありません。とにかくローカライズされていないため、用紙サイズは問題になりません。しかし、他のすべてのターゲット名は問題になります。例えば
プロジェクト言語が英語make book-a4-cover.pdf
に設定されている場合は、make-a4-cilt.pdf
が何をしているのか行う必要があるとmake book-octavo-3d-front.png
はmake book-octavo-3b-on.png
が何をしているのか行う必要があります。
GNU-Makeの可変型の中には、ではなく、の連想配列または行列があります。私はこれをハックするいくつかの方法を考えましたが、彼らはすべて本当に汚いと感じます。ターゲット定義を混乱させることなく、ローカライズされたファイル名で多言語の使用を可能にするには、どのような概念が必要でしょうか?
私にとってはそれほど明確ではありません。あなたは '一般的な' 'Makefile'を使いたくて、多くのプロジェクトで使いたいと思っています。 'projectA'が英語の場合、ターゲットは' book-a4-cover.pdf'でなければなりません。スペイン語 'projectB'の有効なターゲットは' book-a4-cilt.pdf'です。そして多くの 'book-a4- {spanish、english} .pdf'のターゲット。私は正しいことを理解していますか? – uzsolt
@uzsoltそれは正しいことです。そして、どういうわけか、彼らは同じレシピにマッピングしなければならず、レシピのいくつかは、 "覆い"を意味することを知るために "詰め物"から得る方法を知る必要があります。 – Caleb
私は@ MadScientistの答えは(おそらくいくつかの小さな変更で)あなたのケースでは右になると思います。 – uzsolt