問題タブ [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.
autotools - AC_CHECK_LIBは、型にはまらない名前のライブラリに使用できますか?
AC_CHECK_LIBは、チェックする共有ライブラリのベース名を引数として受け入れます。したがって、「libxyz.so」という名前のライブラリの場合、AC_CHECK_LIBの引数としてライブラリ「xyz」のベース名を指定します。xyz.soという名前のライブラリがある場合(注:libxyz.soではありません)、autoconfを使用してこのライブラリの可用性/ユーザビリティを確認するにはどうすればよいですか?
include - configure の実行時に環境変数をオーバーライドする方法は?
Linux の主要なパッケージでは、実行./configure --help
すると最後に次のように出力されます。
これらの変数を使用してディレクトリを含めるにはどうすればよいですか? と を実行./configure --CFLAGS="-I/home/package/custom/"
してみましたが./configure CFLAGS="-I/home/package/custom/"
、これらは機能しません。助言がありますか?
autotools - Autoconf -- 静的ライブラリを含む (初心者向け)
アプリケーションを手動ビルドから autoconf に移行しようとしていますが、これはこれまでのところ非常にうまく機能しています。しかし、統合方法がわからない静的ライブラリが 1 つあります。そのライブラリは、通常のライブラリの場所には配置されません。バイナリ (.a ファイル) とヘッダー (.h ファイル) の場所は、configure 引数として指定されます。(特に、.a ファイルを /usr/lib またはその他の考えられる場所に移動しても、機能しません。) また、伝統的に名前が付けられていません (「lib」または「l」で始まっていません)。 」)。
手動コンパイルはこれらで機能します (ディレクトリは予測できません - これは単なる例です):
(ええと、実際には、.a ファイルが -L などを使用せずに直接参照される理由がわかりません。はい、C プログラムの構築について中途半端な理解があります。)
したがって、configure.ac では、関連する構成引数を使用して、AC_CHECK_HEADER を使用してヘッダー (.h ファイル) を正常に見つけることができます。次に、AC_CHECK_HEADER 内で CPFLAGS に場所を追加し、実際の C コードのヘッダー ファイルの #include がそれを適切に取得します。
$location に配置された configure 引数と、必要なファイルの名前が helper.h および helper.a (両方とも同じディレクトリにあります) である場合、これまでの動作は次のとおりです。
問題が発生するのは、バイナリ (.a ファイル) をリンクすることです。何をしようとしても、そのライブラリの関数呼び出しへの未定義の参照に関するエラーが常に発生します。Cコードに大騒ぎし、そのライブラリへの関数呼び出しで意図的なエラーを作成して、関数プロトタイプがロードされ、コンパイルに使用されたことを示す以前のエラーを生成する可能性があるため、リンケージの問題であると確信しています。
.a ファイルを含む場所を LDFLAGS に追加してから、AC_CHECK_LIB を実行しようとしましたが、見つかりません。
構文が間違っているか、もっと基本的なことが抜けているのかもしれません。
これが私が試したことです:
サイコロはありません。AC_CHECK_LIB は -lhelper を探していると思います (または libhelper?) ので、それが問題かどうかわからないので、これも試してみました (AC_CHECK_LIB を省略し、.a を LDFLAGS に直接含めます)、運が悪い:
手動コンパイルをエミュレートするために、 -L を削除しようとしましたが、それは役に立ちません:
他の組み合わせや順列を試してみましたが、もっと基本的なものが欠けているのではないかと思います....
================ 更新
次のように _LDADD を使用して、Makefile.am の .a ファイルへのハードコードされたパスで動作するようにしました。
しかし、.a ファイルの場所を予測できません。なんらかの理由で、configure.ac で myprog_LDADD を定義しても機能せず (できれば、動的な場所変数を使用できるので)、LDFLAGS、myprog_LDFLAGS、AM_LDFLAGS への変更の組み合わせが機能しないようです。
Makefile.am で、configure.ac で定義されている変数の場所を使用しようとすると、機能しません。
================ 更新
私はそれを理解したと思いますが、自分が何をしているのかわからないので、フィードバックをいただければ幸いです. AC_SUBST() を使用して myprog_LDADD を configure.ac から動作させたので、最終的な解決策は次のようになります。
makefile - CFLAGS 対 CPPFLAGS
CPPFLAGS はプリプロセッサによって使用されるのに対し、CFLAGS (または C++ の場合は CXXFLAGS) はコンパイラ用であることを理解しています。
しかし、私はまだ違いを理解していません。
#include でインクルードされるヘッダー ファイルのインクルード パスを指定する必要があります。
どのような状況でコンパイラに追加のインクルード パスを与える必要がありますか?
一般に、プリプロセッサが必要なヘッダー ファイルを見つけてインクルードする場合、追加のインクルード ディレクトリについて通知する必要があるのはなぜですか? CFLAGS はどのような用途に使用されますか?
(私の場合、実際には、これらの両方でプログラムをコンパイルできることがわかりました。これにより、混乱が増します... CFLAGSまたはCPPFLAGS を使用して目標を達成できます (少なくとも autoconf コンテキストで)。何が得られますか?)
apache - Apacheおよびconf.dインストールプロセスのAutoconfマクロ?
autotoolsを使用してビルドおよびインストールするパッケージがあります。パッケージの一部は、ローカルマシンで実行できるWebサイトです。そのため、パッケージには、/ etc / apache2/conf.dディレクトリにコピーまたはリンクすることを目的とした.confファイルが含まれています。パッケージがこれを行う標準的な方法は何ですか?可能であれば、ユーザーがWebサイトを機能させるための余分な手順を踏まないようにしたいと思います。パッケージをインストールしてから、 http:// localhost/newpackageを参照して起動して実行できるようにしたいと思います 。
また、autoconfがapacheのインストールについて知る方法や、その後の環境を介した標準的な方法はありますか?誰かが私を正しい方向に向けることができれば、それは素晴らしいことです。
スティーブ
makefile - configure / makeの最後にメッセージを印刷する方法は?
GNU autotoolsを使用してソフトウェアパッケージをセットアップしようとしていますが、「Buildsuccessful!」というメッセージが表示されます。ユーザーがmakeを実行した後(configureの後)に出力されます。そのような機能をどのように実装しますか?ありがとう
autotools - Autotoolsの「makecheck」後のlcovの自動呼び出し
テストがインストルメンテーションでコンパイルされるautotoolsプロジェクトを正常にセットアップしたので、テストカバレッジレポートを取得できます。
'make check'が成功した後、ソースディレクトリでlcovを実行することで、レポートを取得できます。
私は今、このステップを自動化したいという問題に直面しています。これを「makecheck」または別の目標「makecheck-coverage」に追加したいと思います。理想的には、結果を解析して、カバレッジが特定のパーセンテージを下回った場合に失敗したいと思います。問題は、カスタムターゲットを追加する方法がまったくわからないことです。
私が得た最も近いものは、このサンプルのautotools configを見つけることでしたが、そのプロジェクトのどこに目標「makelcov」が追加されているのかわかりません。m4/auxdevel.m4にはいくつかの設定フラグしか表示されません。
任意のヒント?
autotools - 静的にリンクされた依存関係を持つ autotools プロジェクトをコンパイルするにはどうすればよいですか?
使いたいオープンソースのライブラリがあります。ソフトウェアをバイナリ パッケージとして配布したいので、ライブラリに他のライブラリへの依存関係を持たせたくないので、依存関係を静的にリンクする必要があります。
現在、ライブラリはオープン ソースであり、バイナリは提供されていないため、自分でコンパイルします。ライブラリは autotools を使用しており、依存関係を静的にリンクする方法に関する有用なドキュメントは見つかりませんでした。私が試みたのは --enable-static を指定して構成スクリプトを呼び出すことですが、これはどうやら configure にライブラリの静的バージョンをコンパイルするように指示するだけですが、必要なのは、依存するすべてのライブラリを含む動的ライブラリです。
したがって、configure に依存関係を静的にリンクするように指示する方法、またはビルドされたライブラリを後処理してすべての依存関係を含める方法が必要です。誰でもこれを行う方法を教えてもらえますか?
ああ、それが重要な場合: 私は 64 ビットの Snow Leopard を使用しています。
build - GNU Build System に基づいてプロジェクトの一部を抽出するには?
「./configure」などで管理されているプロジェクトからサブディレクトリを移動すると、「../../configure.ac」などに到達しようとし、簡単にビルドできません。
そのようなプロジェクトの一部を抽出して独立させる方法は?
autotools - AC_CONFIG_SRCDIR 内のスペースを含むパスをエスケープするにはどうすればよいですか
スペースを含む AC_CONFIG_SRCDIR にいくつかのパスを含める必要があります。どうすればそれらを逃れることができますか? たとえば、「some file.in」がある場合、次のように宣言する必要があります。
AC_CONFIG_SRCDIR[何らかのファイル]