Makefileターゲットは次の責任を負う必要があります。
$ perl Markdown.pl src/index.md
インポート(htmlにマークダウン)出力CONTENT
src / template.htmlファイルから生成されたコンテンツに似たこの文字列に行を置き換えます。 template.htmlには、この行の他の行はありません。
これを達成するためのエレガントな方法は何ですか?
答え1
arcegeが言ったように、実際のソースファイルを変更しないでください。とにかく使いやすいですawk
。
target:
awk '{if($$0=="CONTENT"){system("perl Markdown.pl src/index.md")}else{print}}' src/template.html > build/template.html
この行をよりきれいに見せるために、このawkコードをスクリプトに入れることができます。 (これを行うに$$0
は変更してください$0
。そうしないと、makefileはそれを解釈するのでこれが必要です。)
target:
awk -f convert.awk src/template.html > build/template.html
答え2
一つのルールはこれをしなければならないということですいいえ調整源泉ファイルが構築されるため、内部変更は必要ありません。 「ビルド」ディレクトリまたは同様のディレクトリを使用してください。
template_markdown:
@mkdir -p build
cp -p src/template.html build
(echo /CONTENT/c; perl Markdown.pl src/index.md; echo .; echo w) | ed - build/template.html
perl Markdown.pl
これは、ピリオド(「.」)を表示しないすべての場合を考慮する必要があります。