問題タブ [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.
python - Python コードの Makefile 依存関係を実行する方法
多数の共有 python モジュールを持つ python プログラムのコレクションによって生成された一連の C ファイルがあり、make システムでこれを考慮する必要があります。
各 C ファイルを生成するためにどの python プログラムを実行する必要があるかを列挙するのは簡単です。良い解決策が見つからないのは、それらのプログラムが依存している他の python ファイルを特定することです。これが必要なので、共有されている python ファイルの 1 つが変更された場合、make は再生成が必要なものを認識します。
Python ソースのコレクションから make スタイルの依存関係ルールを生成するための優れたシステムはありますか?
c++ - コンパイル時にソース ファイルのベース名を取得する
私は GCC を使用しています。__FILE__ は、現在のソース ファイルの完全なパスと名前を返します: /path/to/file.cpp
. file.cpp
コンパイル時にファイルの名前だけを (パスなしで) 取得する方法はありますか? これをポータブルな方法で行うことは可能ですか?テンプレート メタ プログラミングを文字列に適用できますか?
これをエラー ログ マクロで使用しています。ソースのフルパスが実行可能ファイルに入るのを本当に望んでいません。
dependencies - 不足しているファイルを処理できるメイクファイルの依存関係ルールが必要
システムにはGNU Makeを使用しています。makefile の最後に、gcc の -MM スイッチを使用して一連の .d ファイルを生成する Makedepends というインクルードがあります。次に、include $(CXXFILES:.cc=.d) 行を使用して、各 .cc ファイルの .d ファイルを含めます。しかし、ファイルを削除したりファイルを移動したりすると、依存関係のステップが中断され、.d ファイルを手動で削除する必要があります (依存関係が失敗するため、make clean でさえ機能しません)。
これらの依存関係 .d ファイルを生成する方法、またはファイルの削除または再配置を適切に処理するこれらの依存関係 .d ファイルを含める方法はありますか?
編集: 例: serial.cc があり、メイクファイルは buffer.h に依存する serial.d ファイルを生成しますが、それを変更して、buffer.h が不要になり、buffer.h を削除します。次にmakeを実行すると、serial.oをbuffer.hに依存させる.dファイルが含まれているため、チョークします。
c - 依存関係のチェック - 不適切なメイクファイルを含むプロジェクトをクリーンアップする方法
私は非常に大きな C プロジェクトを持っており、多くの個別の C ファイルとヘッダー、および何十もの貢献者がいます。多くの貢献者は、makefile と依存関係について十分な知識を持っていません。その結果、「make」が正しい出力を生成したことを信頼できるようになる前に、ほとんどの場合「make clean」を行わなければならないという珍しい問題が発生します。
make に数分かかったとしても、これは問題にはなりませんが、今では高速なマシンで 2 時間近くかかります。人々は make 時に動作するコードをチェックインし始めていますが、最初にクリーンアップを行わず、最終的にコードが壊れます。ビルド。新しいベースラインがカットされる前に、これらがビルド マネージャーによってキャッチされない理由を尋ねないでください...
はい、ここまで放っておくべきではありませんでした。
はい、開発者を教育しています。
いつものように、すべてを停止して手動で修正する時間はありません。
これらの線に沿ったツールがあると思います:
- C および H ファイルから既存のプロジェクトの正しい依存関係情報を作成するのに役立つ自動ツールはありますか?
- メイクファイルに従って依存関係情報を記述する自動ツールはありますか?
- 上記の 2 つの依存関係ツリーの違いを説明するツールの聖杯はありますか?
しかし、この問題を解決するために他に何ができる/すべきでしょうか?
前もって感謝します...
-アダム
perl - KshとPerlでタスクを並行して実行する最良の方法は何ですか?
この大規模なC++プロジェクトがあり、並列makeがないプラットフォーム(Linuxのmake -jなど)でビルドする必要があります。サーバーには6つのCPUがあり、手動で並列ビルドを実行したいと思います。
このようなタスクリストを約300個のオブジェクトファイルに対して生成できます。依存関係のチェックとインクリメンタルビルドにMakefileを使用します。
make -f Makefile obj1.o
make -f Makefile obj2.o
make -f Makefileobj3.o..。
KshとPerlを使用して一度に6つ以下のタスクを実行しながら、これらのタスクを並行して実行するにはどうすればよいですか?(JavaまたはPythonは使用できません:-()
file - メイクファイルにファイルが存在するかどうかを確認する方法
単一の DLL (プラグイン システム用) をコンパイルするためのメイクファイル テンプレートがあります。ユーザーのメイクファイルは次のようになります。
私が持ってmakefile.in
いる:
plugin.os
コンパイルするメインの C++ ファイルはどこにありますか。ところで、末尾のファイルは.os
、共有ライブラリ用にコンパイルされたオブジェクト ファイルです (つまり、 with の-fpic
オプションを使用gcc
) 。
ここでの問題は、余分なソースがおそらく (必ずしもそうとは限りませんが) ヘッダー ファイルになることです。plugin.os
理想的には、それらをターゲットとの依存関係として追加したいと思いますがfile.cpp
、それらが存在する場合に限ります。
この方法は、Windows と Linux の両方で機能するか、少なくともそれぞれに適応できる必要があります。ただし、GNU バージョンの make しか使用していません。
makefile - (M|m)akefile セマンティクスとは何ですか?
Makefile と Makefile の使用に違いはありますか?
visual-studio - Visual Studio の最上位の .mak ファイル?
約 12 個のサブプロジェクトで構成される Visual C++ ソースの本体を継承しました。これらの 1 つは、他のすべてに依存する空の「MakeAll」プロジェクトであるため、MakeAll プロジェクトをアクティブに設定し、「Build All」を選択することで、プロジェクト全体をビルドできます。
このプロセスを自動化したいのですが、Linux 環境から来て、私の直感は Makefile を生成してコマンド ラインからビルドすることでした。IDE は.mak
各サブプロジェクトのファイルを生成しますが、最上位の MakeAll のファイルは生成しません。(これは、依存関係しか含まれていないためだと思います。)
Linuxの答えは、各サブプロジェクトに単純に降りて、それぞれで実行されるMakefileですmake
。しかし、.mak
ファイルをざっと見てみると、それぞれがいくつかの構成のどれを使用するかを伝えたいと考えていることがわかりました。明らかに、一部はデバッグを使用し、一部はリリースを使用し、一部は前の開発者によって作成された構成を使用しています。
コマンドラインからこのような一連のプロジェクトを構築するための一般的な方法は何ですか?
ありがとうございました!
refactoring - Makefile のループ
後続の番号が付けられた C プログラムを追加するたびに Makefile を継続的に更新しなければならない課題がたくさんあります。値 1.1、1.2、1.3 などを繰り返すループでこれを行う方法はありますか?
c++ - Linux 用の最小限の C++ make ファイル
g ++を使用して単一のファイルとhファイルをコンパイルおよびリンクする、Linux用の単純で推奨される「最小限の」c ++ makefileを探しています。理想的には、make ファイルには物理ファイル名さえ含まれず、.cpp から .o への変換のみが含まれます。autoconfの恐怖に飛び込むことなく、そのようなmakefileを生成する最良の方法は何ですか?
現在のディレクトリには、たとえば
t.cpp 番目
そのためのメイクファイルを作成したいと思います。autoconf を試しましたが、.h が g++ ではなく gcc であると想定しています。はい、初心者ではありませんが、私は何年も前にプロジェクトを操作するための最良のアプローチを再学習しているため、小さなプロジェクトのメイクファイルを自動的に作成および維持する方法を探しています。