問題タブ [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.

0 投票する
4 に答える
508 参照

c++ - PHP拡張機能を構築するときに、マングルされていないC ++シンボルを確認するにはどうすればよいですか?

インストールされているC++ライブラリ(Boost Date_Time)に依存するC++で記述されたPHPモジュールがあります。

現在、config.m4ファイルで、次のようにライブラリをチェックしています。

現在、これは現在の環境で機能しますが、ライブラリまたはコンパイラの別のバージョンでこれが機能しなくなる可能性があることを痛感しています。

マングルされていないC++シンボルをautomakeに理解させるにはどうすればよいですか?

編集:

マングルされた名前をチェックするのは恐ろしいことですが、「nm -C」によって返されるシンボル名をチェックする方法はありません(例:boost :: gregorian :: bad_monthなど)。

automakeコマンドAC_LANG_CPLUSPLUS()への参照を見つけましたが、それを使用する方法と、ここで適用できるかどうかはわかりません。

0 投票する
2 に答える
2221 参照

autoconf - Automake と同名のファイル

FreeBSD ホストでコンパイルするように適応させている C++ autoconf マネージド プロジェクトがあります。元のシステムは Linux だったので、AM_CONDITIONAL を 1 つ作成して、ビルドしているホストを識別し、コードをシステム固有のファイルに分けました。

configure.ac

Makefile.am

automake を実行すると、次のようなメッセージで失敗します。

Makefile.in ビルド プロセスでもこの条件を尊重するように automake を構成する方法についてのアイデアはありますか?

ファイルの名前が異なる場合、これは機能しますが、それは C++ コードであり、ファイル名をクラス名と同じに保とうとしています。

前もって感謝します!

0 投票する
4 に答える
549 参照

c++ - Autotools を使用するためのビルド システムのリファクタリング

過去数日間、私は、過去数か月にわたってつなぎ合わせた Makefile の代わりに、autotoolsを使用してプロジェクトをビルドすることについて読んでいます。残念ながら、私のプロジェクト構造が現在どのようになっているのかについて十分な洞察を与えてくれる例は見つかりませんでした。

プロジェクトのアプリケーション コードに含まれる 3 つのライブラリがあります。単一の構成スクリプトを使用して、アプリケーションとライブラリを作成 (およびインストール) する最良の方法を探しています。

0 投票する
4 に答える
4464 参照

gcc - Automakeでリンクせずにどのようにコンパイルしますか?

Automake は初めてで、リンクせずにコンパイルしようとしています。私の目標は、Automake を使用して以下に示すような単純な Makefile を生成することです。

これまでの試行で、次の Makefile.ac にたどり着きました。

元の Makefile をシミュレートするにはどうすればよいですか?

0 投票する
1 に答える
1486 参照

makefile - 適用前の依存関係の Autoconf コンパイル

私は過去数日間 autotools を使ってツールを使ってきましたが、最終的に大きな進歩を遂げました. 私が抱えている問題の 1 つは、メインのアプリケーション コードの前にコンパイルする必要がある 2 つのライブラリがあることです。これを行う方法がよくわかりません。私のディレクトリ構造は以下にあり、私のconfigure.acからのスニペットも同様です。

src/Makefileの前にcsv/Makefilegtkworkbook/Makefileの両方をコンパイルする必要があります。これを指定する方法はありますか?現在、アプリケーションのコンパイル プロセス中に存在しないライブラリ (csv) に関するエラーが発生しています。

0 投票する
2 に答える
8035 参照

makefile - Autotools ライブラリとオブジェクト ファイルの出力制御

私の目標は、すべてのオブジェクト ファイルを Makefile のルートではなく .objs ディレクトリに構築し、バイナリ (およびライブラリ) をプロジェクトのbin/ディレクトリにコピーすることです。しかし、これを行う方法を説明するリソースを見つけることができませんでした。どうすればこれを行うことができますか?

これが私の configure.ac とsrc/Makefile.amです - 参照されている 2 つの共有ライブラリ用の同様の Makefile.am ファイルがあります。それらはコンパイルされ、それらをbin/ディレクトリにコピーした後、正常に動作します。私はこのプロセスを自動化しようとしています。

configure.ac

src/Makefile.am

したがって、私の質問は、各 Makefile のコンパイル結果の出力ディレクトリを指定する方法です (それらをbin/にコピーし、オブジェクト ファイルをMakefile のルートではなく各プロジェクトの.objに配置することを希望します)。 .

これまでご協力いただきありがとうございました.このウェブサイトは素晴らしいリソースであり、すでに提供されているリンクから多くのことを学びました.

0 投票する
1 に答える
5897 参照

c++ - 1 回のインストールで静的ライブラリと実行可能ファイルを生成する (autoconf)

プロジェクトのビルド方法または autoconf を使用したライブラリの作成方法を知っています。

私が達成したいのは、静的ライブラリを生成し、このライブラリを使用して、1 回の構成/作成/作成インストールの実行でプロジェクトをビルドすることです。

一部のソース ファイルをライブラリに配置し、残りをこのライブラリを使用してコンパイルする必要があります。

makefile.am ファイルと configure.ac を変更して機能させるにはどうすればよいですか?

0 投票する
4 に答える
1919 参照

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 アプリをセットアップするための簡単なチュートリアルを書くきっかけになりました。この分野では、最近の初心者向けのドキュメント/情報が明らかに不足しています。

0 投票する
3 に答える
1685 参照

makefile - automake と autoconf をセットアップして条件付きでプログラムをビルドするにはどうすればよいですか (テストなど)

現在、autotoolset プロジェクトには 10 個のテストがあります。src/ ファイルの 1 つに変更を加えて再コンパイルするたびに、各テストが再構築されてリンクされます。これは私の開発時間にかなりの影響を及ぼし始めています。

GNU autotoolset を使用してバイナリ プログラム、テストなどを条件付きでビルドする最良の方法は何ですか? たとえば、test/check_curl_requestheaders.cc で作業していて、変更を加えた場合、ライブラリを再コンパイルしてからその 1 つのテストだけを再コンパイルし、他のバイナリは一切コンパイルしません。

automake 条件 (WANTS_XXX など) を使用することについての言及を見ましたが、それが私が探しているものであるとは 100% 確信が持てませんし、autoconf によってどのように設定されるかもわかりません。

私は、次のような結果になることを期待しています。

また

ポインタ?

編集私はすべてのメイクの前に構成を行っていません。に変更を加えると、期待どおりcheck_curl_requestheadersにのみが再構築されます。check_curl_requestheaders問題は、ライブラリの RequestHeaders 部分に取り組んでいて、src/curl/requestheaders.cc のように変更すると、check_curl_requestheaders. それには時間がかかりすぎます。それは私が避けようとしていることです。多数のバイナリがある場合、そのうちの 1 つだけを再構築する方法はありますか?

0 投票する
2 に答える
4317 参照

c++ - automake/autoconf プロジェクトでシンボル ルックアップ/未定義シンボルを解決するには、どこを見ればよいですか?

1 つのプロジェクトで、2 つnoinst_PROGRAMの が定義されています。そのうちの 1 つは問題なく動作しますが、もう 1 つは次のメッセージを表示しています。

/home/altern8/workspaces/4355/libgdata/test/.libs/lt-gdatacalendar: シンボル検索エラー: /home/altern8/workspaces/4355/libgdata/test/.libs/lt-gdatacalendar: 未定義のシンボル: _ZN5gdata7service7ServiceD1Ev

Makefile.am ファイルを調べましたが、見逃したものは見つかりません。アプリケーションは正しくコンパイルされるので、これはヘッダー ファイルが正しく検出されたことを意味すると推測していますが、何らかの理由で mygdata::service::Serviceが src/libgdata.la ライブラリに含まれていません。

私の仮定が正しい可能性はありますか?src/libgdata.la ライブラリで定義されている他のクラスは使用できるようです。「make」の出力は、Service.cc ファイルが正しくコンパイルされていることを示しています...最終的なライブラリに含まれていることを確認するためにどこを参照すればよいですか?

編集:

これまでに提供された回答に基づいて、これをさらにデバッグすることができました。

デストラクタは Service.cc で定義されています。ヘッダー ファイルでデストラクタに本文を指定すると、すべて正常に動作します。

デストラクタが「機能する」ようになったので、Service.cc で定義されている他のメソッドが見つからないことに遭遇しました。

@ephemient の方法を使用すると、これらのシンボルが実際にライブラリに含まれているように見えます。または、出力を間違って読んでいますか?

私の src/Makefile.am は次のようになります。

私の src/gdata/service/Makefile.am は次のようになります。

私の test/Makefile.am は次のようになります。

gdatayoutube は問題なく動作します。サービス( gdata/client/libgdata_gdata_client.la )の代わりにクライアントディレクトリのコードを使用するのは古いコードです...クライアントがサービスからセットアップされる方法に違いはありません。:-/

**編集#2:##

これがどのように起こったのかはわかりませんが、問題は見つかったと思います。テスト アプリは、src/.

私はこれをさらに調査し、別の機会に他の質問をするかもしれません。