7

任意のデータ ファイルを必要な場所にインストールするように指示するにはどうすればよいautomakeですか?

特定の場所に配置する必要があるファイルがいくつかあります。たとえばdatafile1、プロジェクト内の " " を " " にコピーする必要があります/usr/MyProduct/flash_memory

  • " /usr/MyProduct/flash_memory" は変更できない絶対パスです。
  • " datafile1" は、 によって「ビルド」されたのではなくmake、 によってコピーされる必要があるだけのバイナリ データ ファイルですmake install
  • 我慢できないmake dist。コピーする必要がありますmake install(説明が長いので、これを考慮してください)。
  • 私はむしろ を使用install-hookしませんが、よりエレガントなアプローチを好みます (可能であれば)。

本当にありがとう!

4

1 に答える 1

14

Makefile.am で絶対パスを使用しないでください。これまで。automake に を に展開するように指示するdatafile1$(datadir)、に展開してそこにファイルを配置するように$(prefix)/share/MyProduct定義することができますが、エンド ユーザーは、または他の何かに設定できるようにする必要があります。Makefile.am でやりたいことは次のとおりです。flash_DIR$(prefix)/MyProduct/flash_memory$(prefix)/usr

flashdir = $(prefix)/$(PACKAGE)/flash_memory
flash_DATA = datafile1

$(prefix)/@PACKAGE@/flash_memory( PACKAGE はおそらく make 時に変更可能であってはならないため、を使用する方がおそらく適切ですが、これはそれほど重要ではないと思います。)

次に、ユーザーの場合は、make installプレフィックスを に設定して実行します/usr。Makefile.am で絶対パスを使用しようとすると、段階的なインストール (つまり、DESTDIR の設定) が許可されなくなり、ユーザーの柔軟性が制限されます。これは間違った方法です。重要な点は、パッケージのメンテナーが最終的な場所を選択できないということです。それはユーザーの決定です。

于 2012-05-23T14:33:10.863 に答える