問題タブ [autotools]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
makefile - Autotools ライブラリとオブジェクト ファイルの出力制御
私の目標は、すべてのオブジェクト ファイルを Makefile のルートではなく .objs ディレクトリに構築し、バイナリ (およびライブラリ) をプロジェクトのbin/ディレクトリにコピーすることです。しかし、これを行う方法を説明するリソースを見つけることができませんでした。どうすればこれを行うことができますか?
これが私の configure.ac とsrc/Makefile.amです - 参照されている 2 つの共有ライブラリ用の同様の Makefile.am ファイルがあります。それらはコンパイルされ、それらをbin/ディレクトリにコピーした後、正常に動作します。私はこのプロセスを自動化しようとしています。
configure.ac
src/Makefile.am
したがって、私の質問は、各 Makefile のコンパイル結果の出力ディレクトリを指定する方法です (それらをbin/にコピーし、オブジェクト ファイルをMakefile のルートではなく各プロジェクトの.objに配置することを希望します)。 .
これまでご協力いただきありがとうございました.このウェブサイトは素晴らしいリソースであり、すでに提供されているリンクから多くのことを学びました.
c++ - configure.in で C++ ライブラリのユーザビリティをテストするには?
私は GNU/Linux で C++ プロジェクトに取り組んでおり、Autotools を使用して IBM Informix のライブラリの存在と使いやすさをテストする方法、つまりconfigure.in
. 私は Autotools の経験がないので、基本的にはプロジェクトのconfigure.in
et al. から拾っています。スクリプトと、変更が必要だと感じる場所のコピーと変更。IOW、私は の既存のテキストから適応してきましたconfigure.in
。
これまでのところ、特定のライブラリが存在し、使用可能かどうかをテストするためAC_CHECK_LIB
に inをうまく使用してきました。configure.in
しかし、これはクラスなどではなく、関数を持つライブラリでのみ機能するようです。つまり、これは Informix のlibifc++.so
ライブラリをテストするときに失敗します。
ITString::ITString
などの他の組み合わせも試しました。
Informix の API に「純粋な」関数 (つまり、C++ クラスでコンテキスト化されていない関数) は見つかりませんでした。AC_CHECK_LIB
したがって、このコンテキストで使用する方法があるか、この特定の用途のための別のautoconf
/ configure.in
「コマンド」があることを願っています。
フィードバックをお寄せいただきありがとうございます。
autotools - 追加の外部依存関係を持つライブラリをAC_CHECK_LIBするための最良の方法は何ですか?
libxml ++とcurlに依存するライブラリを作成しましたが、作成AC_CHECK_LIB
した別のパッケージでライブラリを使用する方法を理解するのに苦労しています。新しいパッケージのファイルは、およびconfig.log
への未定義の参照があることを示しています。curl_*
xmlpp::*
私はPKG_CHECK_MODULES
すでに最新のパッケージでlibxml++とcurlのセットアップを行っており、それらは機能しAC_CHECK_LIB
ますが、自分のライブラリの呼び出しには使用できないようです。(自分のライブラリをチェックする前に、libxml ++とcurlをチェックしています)
makefile - 非常に単純な gtk2 c アプリで、gnu ビルド ツールの設定に問題がある
更新:最初の問題は解決され、2 番目の問題はこの投稿の下部に記載されています。
UPDATE2: 2 番目の問題も解決されました。
非常に単純な GTK+2 C アプリケーション用の GNU ビルド ツール (autoconf/automake) のセットアップについて学習しようとしています。このチュートリアルとサブディレクトリを扱うこのチュートリアルに従いましたが、親ディレクトリの Makefile が生成されているにもかかわらず、ソース ディレクトリ (src サブディレクトリ内) が Makefile を生成しないという問題が発生しています。
まず、私のフォルダ構造は次のとおりです。
重要なファイルの内容は次のとおりです。
app/configure.ac:
app/Makefile.am:
app/src/Makefile.am:
次のコマンドを実行すると、次のようになります。
チェックすると、アプリのメイン フォルダーには Makefile と Makefile.in が含まれていますが、src フォルダーには Makefile.am しかありません。何か案は?
更新: adl で言及されている変更を行いました。つまり、AC_CONFIG_FILES コマンドから角かっことコンマを削除し、AM_INIT_AUTOMAKE コマンドからアプリ名/バージョンを削除しました。また、src/Makefile.am の app_LDADD コマンドを app_LDFLAGS に変更しました。これにより、configure を通過できないという最初の問題は修正されましたが、現在は gtk ライブラリを探していません。make を実行すると、次のような結果が得られます。
pkg-config で得られるものは次のとおりです。
src/Makefile.am で何か間違ったことをしていると確信していますが、何が原因かわかりません。それが役立つ場合、私の構成スクリプトは gtk ライブラリを探していないようです。
更新 2:
したがって、update1 の問題の基本的な解決策は、configure.ac ファイルに次のチェックを追加する必要があるようです。
これは、AC_PROG_CC の下のプログラム セクションのチェックに追加されます。これが行うことは、gtk+-2.0 ライブラリをチェックするよう configure に指示することです。大文字の GTK は任意の変数名のようで、CFLAGS、LIBS、および LDFLAGS (およびおそらくそれ以上) が動的に追加されるため、PACKAGE_* 変数を生成できます。AC_SUBST は Makefile.am の PACKAGE* 変数にアクセスできるようにするようです。参考までに、-export-dynamic フラグが追加されて、glade/gtkbuilder ファイルを使用できるようになりました (他にも理由があると思いますが、私はまだ非常に基本的なレベルの理解に留まっています)。
src/Makefile.am には、次のものが必要です。
これは、基本的な gtk+-2.0 C アプリに必要なすべてのようです。autotools を使用する C gtk アプリをセットアップするための簡単なチュートリアルを書くきっかけになりました。この分野では、最近の初心者向けのドキュメント/情報が明らかに不足しています。
macos - LTLIBRARIES: mv *.Tpo *.Plo ですが、前者は存在せず、後者は既に存在します
私は既存のライブラリ(libtcod)をAutotools(OS Xの幸福のために)にかなり簡単に変換しています。残念ながら、Makefile.am
のlib_LIBRARIES
ルールをに切り替えるlib_LTLIBRARIES
と、ビルドは成功から失敗に変わります。以下の出力からの抜粋:
src/Makefile.am
次のようになります。
src/.deps
内容:
ここで明らかな間違いを犯していますか、それともこれでうまくいくのでしょうか?
autotools - ./configure を実行せずに .Plo ファイルを再生成する
私は 1 つの autotools ベースのプロジェクトを掘り下げようとしていますが、実際にはかなり大きなものです。私はその小さな部分、サブディレクトリに取り組んでいます。そして、この小さな部分内でファイルとディレクトリを常に追加/移動/削除する必要があります。
毎回最上位で ./configure を実行すると、時間がかかるだけでなく、オブジェクト ツリー全体が無効になります (用語については申し訳ありませんが、私はこれが初めてです)。そこで、(automake path/to/my/part を実行して) Makefile.in から Makefile.in を再生成する方法を見つけ、ビルド ツリーで Makefile.in から Makefile を再生成する方法を (./config.status を実行して) 見つけましたパス/to/my/part)。しかし、まだ理解できないことがあります: すべての依存関係ファイル (ビルド ツリーの各サブディレクトリ内の .deps/*.Plo) を再生成する方法です。実際、 configure を再度実行すると問題は解決します。だから、私の質問は: configure を再度実行せずに依存関係ファイルを再生成する方法は? 前もって感謝します。
autotools - Vala プロジェクトの autoconf/automake makefile を自動的に生成する端末ツールはありますか?
私は Vala プロジェクトを作成して、Mono の代替としてこの言語をどのように開発するのが好きかを確認しようとしています。automake を使用して、必要なすべてのファイルを含むプロジェクト テンプレートを生成できると思います (私の .vala コードは除きます)。どんな助けでも大歓迎です。
autotools - autotools を Intel コンパイラーでコンパイルするにはどうすればよいですか?
configure 引数に応じて、Intel コンパイラーまたは gcc/g++ でコードをコンパイルしたいと考えています。これは可能ですか?これを実現するには、configure.ac および Makefile.am ファイルに何を入れる必要がありますか?
configuration - Autotools に構成フラグを追加して実装する方法は?
私たちの研究グループのプログラムの一部には、ctemplateライブラリによって提供される補助機能があります。configure
古いクラスターでは、コンパイルのためにソフトウェアをビルドできないため、この機能を分離し、 などのフラグを介して含めるかどうかを制御したいと考えてい--disable-ctemplate
ます。
C++ で記述されたこのソフトウェアは、Autotools ビルド システムを使用しますが、どちらも私はあまり経験がありません。私の理解では、このタスクを達成するには、次のことを行う必要があります。
AC_ARG_ENABLE
で新しいエントリを作成して、configure スクリプトに新しいフラグを追加しますconfigure.ac
。ライブラリを使用するコードと、そのコードを呼び出すすべてのコードの周りに、いくつかの
#ifdef
(または場合によって#ifndef
は) ステートメントを追加します。ctemplate
最初のステップは次のようになると思います。
--enable-FLAG
の代わりに使用した例からこの例を適応させたので、ロジックが正しいかどうかはわかりません--disable-FLAG
。
2 番目のステップでは、次のようなプリプロセッサ フラグでセクションをラップします。
私がやった場合、これはすべてを正しく「配線」しconfigure --disable-ctemplate
ますか?
ctemplate
また、これにより、プログラムがコンパイルのためにライブラリに入らないことが保証されますか? そうでない場合、これはすべて無駄です。ctemplate
ライブラリと依存コンポーネントのコンパイルを防止できることが不可欠です。
私は C++ と Autotools の両方に慣れていないことを繰り返します。この問題を解決するために、私は非常に素朴な最初のアプローチを取りました。この分野の経験がある場合は、修正と説明を提供していただければ幸いです。