Linuxでコンパイルして実行するCプロジェクトを入手しました。これは、多くのサブディレクトリを持つ非常に大きなプロジェクトです。親ディレクトリ内には、ファイルMakefile.am
およびMakefile.in
があります。
make -f Makefile.am
を実行しようとしましたが、次のエラーが発生しました。
make: Nothing to be done for `Makefile.am'.
どういう意味ですか?どうすれば自分のタスクを達成できますか?
これらのファイルは Autotools スイートで使用されます。 Makefile.amファイルは、 automake を使用してMakefileにコンパイルされます。
ディレクトリにconfigure
スクリプトがあるかどうかを確認してください。ある場合は、次のように入力します。
./configure
そうでない場合は、以下を実行します。
autoreconf
configure
スクリプトを作成するディレクトリにあります(これを実行するには、Autotoolsスイートをインストールする必要があります)。
その後、実行できるconfigure
スクリプトが必要になります。
構成が完了すると、ディレクトリに通常のMakefileが作成され、実行できるようになります。
make
取り残されたもの:
これら(Makefile。{am、in})はどちらもmake -f
で使用することは想定されていません。
Tarballがすでにconfigureに同梱されている場合は、それを実行してmakeします。そうでない場合は、./autogen.sh
またはbootstrap
(*)を実行します。それが存在しない場合は、代わりにautoreconf
を使用してください。
(*)autogen/bootstrap:開発者によって追加された便利なスクリプトshouldautoreconf
を呼び出すだけです。残念ながら、autoreconfを避けて、すべての低レベルコマンドを不必要に呼び出す人もいます。
すでに述べたことを補足するには:プロジェクトディレクトリでconfigureというスクリプトを検索します。そこにある場合、プロジェクトの構築は次のようになります。
。/構成、設定
make
オプションで、インストールするには:
Sudo make install
またはsu-c "make install"
configureスクリプトがない場合でも。 1つあるかもしれませんautogen.sh。このスクリプトを実行してconfigureスクリプトを生成し、上記のようにします。
Makefile.am
はおそらく automake で使用されます。
試してください:
automake
あなたも試してみたいかもしれません
make -f Makefile.in
これはautomakeを実行した製品なので