問題タブ [makefile]
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.
recursion - Recursive Make-味方か敵か?
プロジェクトで(GNU)Makeを使用しています。私は現在、ディレクトリごとに1つのmakefileを配置し、SUBDIRSを使用してサブディレクトリを指定しています。これはmakeを使用する理想的な方法ではなく、1つのトップレベルのmakeファイル(または複数の、includeを使用して分割)を使用することをお勧めします。過去にこのレイアウトを移行/使用してみましたが、不必要に複雑に見えます。
再帰的なmakefileを使用することの利点/欠点はどれですか?
c++ - 最新のコンパイル時間でファイルを自動的に作成し、それをライブラリに含める方法は?
約 100 個のソース ファイルで構成されるライブラリがあります。他のファイルのいずれかがコンパイルされている場合、ソースの 1 つを常に再構築したいのですが、make/build を実行するたびにそれを構築したくありません。
基本的に、このファイルには最終ビルドの日付/時刻が組み込まれているため、ライブラリにリンクしているアプリケーションは最終ビルドの時刻/日付を確認できます。これを行う他の方法はありますか?
makefile - 共通 GNU メイクファイル ディレクトリ パス
共通のメイクファイルを使用して、いくつかのビルド情報を統合しようとしています。私の問題は、さまざまなサブディレクトリ レベルからその makefile を使用したいということです。これにより、作業ディレクトリの値 ( pwd) が予測できなくなります。例えば:
Makefile.commonこのようにサブディレクトリからインクルードすると、$(TOP)ディレクトリが正しくなく、他のすべてがそれに続きます。
気まぐれな代わりに、独自のMakefile.commonディレクトリパスを使用するための最良の方法は何ですか?pwd
64-bit - autotools はマルチプラットフォームの makefile を作成できますか
私が数年間開発してきたプラグイン プロジェクトがあり、プラグインは [プライマリ アプリケーション バージョン、サードパーティ ライブラリ バージョン、32 ビットと 64 ビット] のさまざまな組み合わせで動作します。autotools を使用して、プラグインのすべてのバージョンをビルドする単一のメイクファイルを作成する (クリーンな) 方法はありますか?
autotools のドキュメントをざっと読んでわかる限り、私が望むものに最も近いのは、プロジェクトの N 個の独立したコピーを作成し、それぞれに独自のメイクファイルを作成することです。これは、(a) コードの変更をすべての異なるコピーに継続的に伝達する必要があり、(b) プロジェクトを何度も複製すると多くの無駄なスペースがあるため、テストと開発には最適とは言えません。より良い方法はありますか?
編集:
私はしばらくの間、独自のソリューションを展開してきました。そこでは、派手なメイクファイルと、さまざまなサードパーティのライブラリ バージョンなどを追跡するためのいくつかの perl スクリプトがあります。そのため、他の非 autotools ソリューションに対してオープンです。他のビルド ツールについては、エンド ユーザーが非常に簡単にインストールできるようにしたいと考えています。また、ツールは、さまざまなサード パーティのライブラリやヘッダーを問題なく検索できるほどスマートである必要があります。私は主に Linux ソリューションを探していますが、Windows や Mac でも機能するソリューションがあればおまけになります。
svn - GNU make での前提条件の遅延または繰り返し
Subversion のリビジョン番号を C++ プロジェクトに埋め込もうとしていますが、そのための GNU make の設定に問題があります。私のメイクファイルは現在、次のようになっています。
svnversion.osvnversion.cpp(パターン ルールを介して) および(何らかの理由で依存svnversion.h関係チェックが検出されないため、明示的にリストされています) に依存します。 svnversion.hスクリプトによって作成および維持されupdate-svnversion-h.plます (基本的にはsvnversion、出力を実行して C++ ファイルに変更するだけです)。
現在、makeファイルを最新の状態にするには、2 回実行する必要があります。初回はmake実行されますがupdate-svnversion-h.pl(前提条件としてリストされているため)、その後のタイムスタンプをチェックしsvnversion.hて によって変更されたことを確認update-svnversion-h.plしないため、 をリメイクしませんsvnversion.o。2回目は、タイムスタンプをチェックし、update-svnversion-h.plとにかく実行し(今回svnversion.hは最新なので何もしません)、再コンパイルsvnversion.cppして make にしsvnversion.oます。
GNU make に単一の前提条件を 2 回評価するか、前提条件のコマンドが終了するまで前提条件のタイムスタンプのチェックを遅らせるように指示する方法はありますか?
または、ソース コードにリビジョン番号を埋め込むより良い方法はありますか? (速度を上げるために、ビルドごとに再コンパイルが必要なソリューションは避けようとしています。)
makefile - -fPICオプションを使用して再コンパイルしますが、オプションはすでにmakefileにあります
makeを実行すると、このエラーが発生します。
オプションで再コンパイルする必要があると書かれてい-fPICます。とに-fPICオプションを追加してそれを行いましたが、それでも同じエラーが発生します。これを解決する方法はありますか?この問題は64ビットマシンの使用に関連していることを確認しましたが、実際に使用しています。CFLAGSCXXFLAGS
c++ - Clrdump (C++) エラー LNK2019: 関数 _main で参照されている未解決の外部シンボル __imp__RegisterFilter@8
pvcs コンパイラ (Microsoft Visual C++、2008 コンパイラを使用) でメイクファイル システムを使用していますが、次の形式のリンク エラーがいくつか発生します。
error LNK2019: unresolved external symbol __imp__RegisterFilter@8 referenced in function _main
これは、extern "C"宣言を使用しているにもかかわらず、次のように発生しています。
また、makeexe.mak では、ライブラリは次のようにリンクされています。
$(COMPILEBASE)\lib\clrdump.lib \
正直なところ、私はメイクファイルの専門家ではなく、システムを Microsoft Visual C++ 6.0 から 2008 に切り替えています。以前はシステムが機能していたため、この切り替えはリンク エラーに関係している可能性があります。
どんな助けでも本当に感謝します。
前もって感謝します、
ジョセフ
-- 編集 1 --
PVCのmakefileシステムで詳細を有効にする方法を知っている人はいますか?
上記の関数はすでにコンパイラで装飾されたバージョンであることに注意してください。
一方、C++ 関数はただ
助けてくれてありがとう、しかし誰かがより完全な解決策を投稿できるなら、それも非常にありがたいです.
ジョセフ
-- 編集 2 --
親切な人がこれを投稿しましたが、サインインすると消えました:
imp プレフィックスは、この関数が DLL からインポートされたことを示します。CLRDUMP_API-の定義を確認してください__declspec(dllimport)。詳細については、この記事を参照してください。
有効なリンクがありましたが、私はそれを失いましたが、いつでもトピックを検索できると思います。
ありがとう、あなたが誰であれ!
-- 編集 3 --
ChrisN に感謝します (私はまだ投票を許可されていません)。更新ボタンを使用したにもかかわらず、あなたの回答は消えましたが、カットアンドペーストを投稿した後に再び表示されました.
これは私の定義です:
__stdcall は問題ないと思いますか?
-- 編集 4 --
少なくとも私の特定のシステムでは、回答者、特に ChrisN の努力に感謝していますが、リンク エラーは残っています。誰かがさらに洞察を持っているなら、私はそれを感謝します。再度、感謝します。
ubuntu - makeinfo とは何ですか? どうすれば取得できますか?
GNU grep をビルドしようとしていますが、make を実行すると、次のようになります。
makeinfo とは何ですか? どうすれば取得できますか?
(違いがある場合、これはUbuntuです)
include - Makefile にヘッダー用のディレクトリを追加する
こんにちは、お聞きしたいのですが、*.h が見つからないというエラーを回避するために Makefile にヘッダー ファイルのディレクトリを追加する方法を誰かが知っている場合は、このオプションを試してみましたが、機能しません。
linux - 複数の .c ファイルでカーネル モジュールをコンパイルするための Makefile の配置方法は?
複数の .c ファイルでカーネル モジュールをコンパイルするための Makefile の配置方法は?
これが私の現在の Makefile です。KDevelopによって自動生成されました