2011-08-02 13 views
1

を使用して場所をインストールする方法:.cppファイルと.HPPのは、ソースファイルのディレクトリを設定し、私はプロジェクトディレクトリ以下のようにしたいGNU Autotool群

app/ 
| 
    src/ 
    Makefile

すべてを、.hファイルはsrcサブディレクトリにあります。ディレクトリ/srcをソースディレクトリとして使用して、生成されたMakefileをMakefile.amまたはconfigure.acに設定するにはどうすればよいですか?そして生成された実行可能ファイルを/usr/optのような指定されたディレクトリに入れる方法?

もう1つの質問は、私のプログラムを.soライブラリとして作成する場合、目標を達成して/usr/libまたは/usr/local/libにインストールする方法ですか?ヘッダファイルをどのようにして/usr/local/include/appのようにするのですか?

+0

この質問はC++と何が関係していますか?私はこのタグを削除します。 –

答えて

1

通常、あなただけのトップレベルのMakefile.amに

 
SUBDIRS = src 

を追加し、AC_CONFIG_FILES中のsrc/Makefileを言及します。再帰的なmakeについていくつかの妥当な苦情がありますが、あなたのソースのすべてがsrcにある場合、makeの単一レベルの再帰は実際には問題にはなりません。実行可能ファイルを/ usr/optに置くことは、configure時に接頭辞を設定するときにユーザーが行います。パッケージをビルドする際には考慮しないでください。実行可能ファイルをビルドするには、Makefile.amでbin_PROGRAMSを使い、ライブラリをビルドするにはlib_LIBRARIESかlib_LTLIBRARIESのどちらかを使うべきです(個人的にはlibtoolを使い、後者を使います)。)

/usr/libまたは/ usr/optにインストールすることに関するご質問は、基本的な誤解を示しています。パッケージをビルドするときは、絶対に気にしないでください。パッケージ管理者は、$(prefix)/ bin(または$ exec_prefix/bin、または$ bindir)にプログラムをインストールし、そのライブラリは$ libdirになければならないことを示していますが、$ prefixと$ libdirと$ bindirはconfigureを実行するときに使用します。 (普通は接頭辞を設定し、bindirのデフォルトは$ prefix/binですが、libdirのデフォルトは$ prefix/libになります)

+0

あなたのソリューションは別の便利な方法です。返信いただきありがとうございます。もう一つ質問したいのは、ヘッダファイルのインストール場所を指定するにはどうすればいいのですか?私はconfigureの-prefixによっても決定されると思います。しかし、私はMakefile.amに何を入れるべきですか?私は "nobase_include_HEADERS = foo/Header.hpp"を自分のMakefileで試しましたが、それはできません。いくつかのヒントはありますか? –

+0

エラーは何ですか? foo/Header.hppが、その行を持っているMakefile.amに相対的なソースディレクトリに存在する場合は、正常に動作するはずです。 –

0

「SRC」ディレクトリにはautoconfとautomakeのファイルにconfigure.acMakefile.amを入れて、「./configureを」コマンドがトップレベルではなく、そこに実行する必要があることをあなたの文書に書き込みますディレクトリ?さもなければ、あなたは本当に少なくともいくつかのautoconf/automakeファイルがトップレベルにあることを避けることはできません。あなたのようなものがあります実行可能ファイルの一般的

+0

私はあなたに同意しない、私は "リモート"を作ることができると確信しています。私は私たちがAUTOMAKE_OPTIONS = subdir-objectsのようなものを使うことができると思っています。遠隔の場合、すべてのオブジェクトファイルがsrcに入れられるでしょう。オブジェクトを置く場所を指定する方法はわかりません。ファイルと実行可能ファイルを別の場所にコピーします。 –

+0

私はあなたの本当の目的を理解していないかもしれません。オブジェクトファイルをソースと区別して保存したい場合は、どこにでも置いて、/ where/ever/your/sources// app/src/configureを実行するだけで、必要なファイルを自動的にconfigureスクリプトが置かれているディレクトリ。 – snap

+0

ええええええええええええええええええええええ?今はかなりの質問です。私は混乱しています。 – snap

1

:これはprefixディレクトリの/ binディレクトリにインストールされます

bin_PROGRAMS = foo 
foo_SOURCES = $(top_srcdir)/src/foo_main.c \ 
$(top_srcdir)/src/foo_main.h \ 
$(top_srcdir)/src/something_else.c 

を、あなたが望むものではありませんが、それは何のユーザーのようなものだもののます期待する。 foo_SOURCESは上記のようである

myexedir = $(prefix)/opt 
myexe_PROGRAMS = foo 
foo_SOURCES = ... 

:あなたはこれを行う必要がありますやりたい

lib_LTLIBRARIES = libfoo.la 
libfoo_la_SOURCES = ... 

、それはprefixディレクトリの/ libディレクトリにインストールされます:それはただのライブラリ用の

。どこlibにインストールセットアップは、あなた次第ではありません(直接)が、誰のconfigureを呼び出します(が呼び出されたmake installをするとき)

./configure --prefix=/usr 

することは/ usr/libに

./configure 
にlibには、make installをします

または

./configure --prefix=/usr/local 

libには/ usr/local/libにインストールようになります。

+0

こんにちは@ ldav1s。返信いただきありがとうございます。もう一つ質問したいのは、ヘッダファイルのインストール場所を指定するにはどうすればいいのですか?私はconfigureの-prefixによっても決定されると思います。しかし、私はMakefile.amに何を入れるべきですか?私は "nobase_include_HEADERS = foo/Header.hpp"を自分のMakefileで試しましたが、それはできません。いくつかのヒントはありますか? –

関連する問題