web-dev-qa-db-ja.com

外部ライブラリでコンパイルするソフトウェアを作成するにはどうすればよいですか?

依存関係のあるオープンソースソフトウェアをコーディングしたい。私はC/C++のスキルと、最小限のメイクファイルの知識を持っています。しかし、これを./configure && makeのようにコーディングすることや、他のライブラリへの依存関係を適切に含める方法に興味があります。

わかりやすいチュートリアルはどこにありますか?それを学ぶのは難しいですか?

3
ManuelSchneid3r

Configureもmakeも習得が難しいとは思いません。ただし、それらは複雑であるため、特に実験を通じて、習得するのが難しい場合があります。たとえば、make requireコマンドは、ターゲットを構築するためにTAB文字で厳密にインデントされます。これは、多くの場合、スペースと区別するのが困難です。

これらの両方(およびそれ以上)を説明するページは次のとおりです: http://autotoolset.sourceforge.net/tutorial.html#Compiling-with-Makefiles

そして、GNU構成の標準: http://www.gnu.org/prep/standards/html_node/Configuration.html のページ。

autoconfはconfigureスクリプトを作成するためのツールであることに注意してください。もちろん、独自のconfigureスクリプトを自作することもできますが、autoconfを使用すると、標準タイプのスクリプトを取得できるため、プログラミングの労力を大幅に節約できます。

3
ash

その多くはautoconfで行われます。 (公式ドキュメント以外に)特に推奨するチュートリアルはありませんが、チュートリアルが必要になります。それがあなたが探しているものです。 「Autoconf」は口語的に「automake」を含む一連のツールを指します。

私はしばらくそれをしていませんが、私のメモからプロセスをスケッチしようとします:

  • ソースディレクトリごとに(ソースをトップレベルに配置せず、サブディレクトリに配置します)、Makefile.amを作成する必要があります。これは通常のmakefileのルールに従いますが、コンパイルターゲットは含まれず、代わりにautoconfプロセスに固有の命名スキームに従っていくつかのターゲットと変数を定義します。これはautomakeによって処理されます。

  • トップレベルでは、configure.acファイルを作成する必要があります。 autoscanツールでこれを実行してから、微調整することができます。

  • 次に、最上位ディレクトリから順番に実行する必要があります:aclocalautomake -acautoheader(そしておそらく再びautomake -ac)、次にautoconf。これらにはすべて、目的を説明するマニュアルページがあります。

プレスト!パッケージの準備ができました。

それを学ぶのは難しいですか?

それは間違いなく退屈なそして私はそれを超簡単とは言いません、いいえ。プロジェクトが小さく、特定のプラットフォームのみを対象としている場合は、メイクファイルから実行できる独自の依存関係チェックスクリプトを考え出すことができます。

2
goldilocks