問題タブ [automake]
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を使用したデフォルトのコンパイラフラグ
デフォルトのコンパイラ/リンカなどを設定する方法を知りたい。Autoconf/Automakeコンボを使用する場合はフラグを立てます。
たとえば、何も設定しない場合、デフォルトのコンパイラフラグは「-O2-g」です。たとえば、デバッグしたい場合は、他の何かでオーバーライドできます。
しかし、最適化を有効にするとデバッグが不可能になるため、デフォルトの構成はばかげていると思います。configure
したがって、引数なしで実行する場合、デフォルトのフラグは「-O2」または「-O0-g」のいずれかになります。どうすればいいのですか?
編集:私は次の解決策を試しました:
- Makefile.am
progname_CXXFLAGS=whatever
に入れます。フラグを置き換えるのではなく、デフォルトのフラグに追加するため、機能しません。 - configure.acに入れ
CXXFLAGS=whatever
ます。これは機能しますが、後でオーバーライドすることはできません。
c - GNUAutoMakeの明示的な中間オブジェクトファイル
手作業でコーディングされたMakefileのセットからGNUAutoMakeに変換しているCアプリケーションがあります。これには、インターフェイスヘッダーといくつかのプラットフォーム依存の実装を含むサブディレクトリがあります。現在、実装が選択され、そのディレクトリ内の固定名のオブジェクトファイルにビルドされています。次に、ドライバーインターフェイスを使用するコードは、そのオブジェクトファイルにリンクし、適切なドライバーを自動的に取得します。
このシステムをAutoToolsを使用するように変換する最良の方法は何ですか?私はすでにAutoConfが正しいドライバー実装ファイルの代わりを作成しています。実装ファイルを入れることができる変数を持つAutoMakeターゲットを取得する方法がわかりませEXTRA_*_SOURCES
ん*_LDADD
。中間オブジェクトファイルをあきらめて、それらを使用するプログラムターゲットのリストに入れる必要がありますか?
編集: ptomatoのおかげで解決しました。
Automakeの依存関係の解決のため、マニュアルの「条件付きソース」セクションで説明されているように、すべての可能なソースに*_SOURCES
とで名前を付ける必要があります。したがって、ライブラリスタンザは実際には次のようになります。EXTRA_*_SOURCES
c - libtoolに変換すると、automakeとautoconfがlibtoolを見つけることができません
libcsvをlibtoolを使用するように変換しようとしているので、makefileを操作せずにmacosxで使用できます。ツールから生成されたmakefileを実行しようとすると、次のエラーが発生します。
OSX10.5を実行しています。それで、少しいじくり回した後、生成されたmakefileに空のlibtool変数があることに気づきました。
LIBTOOLをlibtoolに設定すると、すべて問題ありません。以下のautoconfまたはautomakeファイルを間違えたと思います。
それが助けになるなら、ここはconfig.logの一部です:
だから誰かが私が間違ったことを知っていますか?
前もって感謝します。
c - autoconf と automake のバージョンの選択
私のubuntu Linuxで利用可能なautoconfとautomakeの多くのバージョンがあることがわかりました。新しいプロジェクトを最初から作成したい場合、最新バージョンと古いバージョンのどちらが最適ですか?
c - automake での条件の使用
最近、Makefile の使用から Automake の使用に切り替えましたが、automake を使用して次の単純な if ステートメントを記述する方法がわかりません。
automakeを使用している場合、これは可能ですか? からmakefileを自動生成するので、Makefileのテンプレートに書いても意味ないの?または、自動生成された Makefile に追加する方法を見つけようとする必要がありますか?
c - Automakeによって生成されたMakefileにカスタムコードを追加する
Automakeによって生成されたMakefileに条件付きのランタイムを追加したいとします。この条件についてAutomakeに伝える方法はありますか?
autotools - automake configureスクリプトを使用して64ビットLinuxで32ビットをビルドしますか?
64ビットシステムを使用していますが、32ビットバイナリのセットが必要です。32ビット/x86のmakefileを生成するには、configureスクリプトにどのオプションを渡す必要がありますか?
tar - Autotools - tar これは tar アーカイブのようには見えません
実行するmake distcheck
と、パッケージが正常にビルドされ、配布の準備ができたというメッセージが表示されます。を解凍するtar.gz
とtar -zxvf hello-0.2.tar.gz
、すべてのコンテンツが正常に抽出されます。ただし、別のマシンでそれらを抽出しようとすると、次のようになります。
奇妙なことは、以前は機能していたことです。
パッケージをビルドしようとしているマシンで、更新しましたがautomake 1.10.1, autoconf 2.61, and tar 1.20 to automake 1.11.1, autoconf 2.65, and tar 1.23
、それでも同じ問題が発生します。
何が問題になる可能性がありますか?
linux - Automake: Makefile.am の条件文の構文
は、configure.ac 内の AM_CONDITIONAL 句で定義されていますif VAR_NAME
。VAR_NAME
Makefile.amに対応する「定義されていない場合」の構造はありますか?
build-process - automake/Makefile.amを使用したIDLエンティティの生成
IDL(インターフェース記述言語)に慣れていない人のために、プラットフォーム(java、c、c ++など)で使用するためにデータ記述を抽象化します。私のプロジェクトには、Foo.idlから生成された依存関係Foo.c、Foo.h、FooHelper.c、およびFooHelper.hがあります。Foo.idlが変更されたときに任意のコマンドを実行し、ビルドプロセスにFoo.c、FooHelper.cを含めるにはどうすればよいですか?
私の現在の試みは、Makefile.amにルールを追加します。ルールが生成されたMakefileにコピーされることを期待しています。
私が試してみました:
次に、Foo.idlをmy_program_SOURCESに追加しましたが、ビルド時にthe_generate_commandを実行しません。
IDLからの生成に成功しました
ただし、Foo.c、FooHelper.cはコンパイルプロセスに追加されないため、ビルドされることはなく、the_generate_commandによって生成されるだけです。
すべてのコード(idlを含む)は$ PROJECT_DIR/srcにあります。