私はC ++で書かれた個人的なプロジェクトに取り組んでおり、ビルドシステムとしてGNUAutotoolsを使用しています。
ソフトウェアをマニュアルページと一緒に配布したいのですが、Groffはあまり好きではありません。このため、私はすべてをAsciidocで記述し、それをGroffでコンパイルすることにしましたa2x
。
結果には非常に満足していますが、 Asciidocのインストールには多くのディスク容量が必要になる可能性があることに気付きました。たとえば (編集:真実ではありません。提案/推奨を無効にするのを忘れましたが、とにかくユースケースは関連しています)。asciidoc-base
、Debian Stretchでは、1928MBの依存関係が必要です。
1つの解決策は、オプションにすることです。これを実現するためconfigure.ac
に、次の行が含まれています。
AC_CHECK_PROG([asciidoc], [a2x], [a2x], [false])
AM_CONDITIONAL([ASCIIDOC_AVAIL], [test x$asciidoc != xfalse])
…そしてman/Makefile.am
ファイルは次のように定義されています:
if ASCIIDOC_AVAIL
man1_MANS = foo.1
man5_MANS = foo.conf.5
foo.1: foo.1.txt
$(asciidoc) --doctype manpage --format manpage ./$<
foo.conf.5: foo.conf.5.txt
$(asciidoc) --doctype manpage --format manpage ./$<
clean:
rm $(man1_MANS) $(man5_MANS)
endif
これはうまくいくように見えますが、私はあまり満足していません。マニュアルを提供しないという考えは好きではありません。
make dist
手順の一部としてmanページを事前にコンパイルすることをお勧めしますか?ディストリビューションfoo-x.y.z.tar.gz
にconfigure
スクリプト(VCSではチェックされないがによって生成されるautoreconf
)が含まれているのと同じように、作成foo.1
してfoo.conf.5
プリコンパイルし、ソースtarballで配布することができます。
これが「ベストプラクティス」の観点から受け入れられる場合、どうすればそれを達成できますか?私はそれらをEXTRA_DIST
(EXTRA_DIST = man1_MANS man5_MANS
)として宣言しようとしましたが、あまり運がありませんでした。
何か案が?
編集:生成されたファイルを配布に追加する最良の方法は?私の特定のケースに組み込みのメカニズムがあるとは思えませんが、質問は関連しているようです。
私の特定のケースには組み込みのメカニズムがあるとは思えませんが。
実際、そのページのほぼ半分に、ここで説明されているそのようなメカニズムがあります。dist_
接頭辞は、あなたが探しているものです。
dist_man1_MANS = foo.1
dist_man5_MANS = foo.conf.5
if ASCIIDOC_AVAIL
foo.1: foo.1.txt
$(asciidoc) --doctype manpage --format manpage ./$<
foo.conf.5: foo.conf.5.txt
$(asciidoc) --doctype manpage --format manpage ./$<
CLEANFILES += $(dist_man1_MANS) $(dist_man5_MANS)
endif
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加