私はMakefileの依存関係リストを自動的に生成したいが、私はVisual Studio 2005を使っている。もしGCCを使っていたなら、この依存関係リストを作るために-M(あるいは多くのバリエーションの1つ)を渡すことができた。Visual Studio CコンパイラにはGCCの-Mと同等の機能がありますか?
cl.exe
というコマンドラインオプションを見てもわかりません。後処理で出力を微調整することはできますが、近づけるほど良い方法です。
私はMakefileの依存関係リストを自動的に生成したいが、私はVisual Studio 2005を使っている。もしGCCを使っていたなら、この依存関係リストを作るために-M(あるいは多くのバリエーションの1つ)を渡すことができた。Visual Studio CコンパイラにはGCCの-Mと同等の機能がありますか?
cl.exe
というコマンドラインオプションを見てもわかりません。後処理で出力を微調整することはできますが、近づけるほど良い方法です。
私はその正確な問題に対処しなければなりませんでした。 -Mオプションを置き換えるスクリプトを追加したかったのです。ここで私はそれをやった方法は次のとおりです。
これは私がそれをやったやり方です。がんばろう!
わけではありません直接cl.exeのではなく、このラッパーとあなたが探しているものを達成することができます:
これはgccの '-M'フラグで動作しますか?ほとんどのコンパイラフラグのマッピングは簡単ですが、実行するにはプリプロセッサ(またはそのようなもの)が必要です。 –
VC++コンパイラには前処理のみのオプションがありますが、それは行いません。 OPが望む '-M。* '設定は、そのパッケージでサポートされていない設定です。 'ccFile.cfg'の底面を参照してください。インストールされている場合は、http://pastebin.com/m1707aa02 –
私たちはFortranで全く同じ問題を抱え、ソースコードをスキャンして#includes
をすべてトラバースする独自のミニコンパイラを作成する必要がありました。
これをしなければならない時間はどれくらいでしたか? – Geo
少なくともVisual Studio 2005のcl.exeには、/showIncludes
というオプションがあります。
コンパイラは中間の.idbファイルに依存関係を格納します。あなたはそこからそれを解析することができるかもしれません。
がhttps://msdn.microsoft.com/en-us/library/kfz8ad09.aspx
あなたは、すべてがそこに "/ MR/inversedeps /" または "/ IPM /ヘッダー/" で始まるファイルが含まれて見つけることができます参照してください、それはそうです。
他の中間ファイルにも依存する必要があります。 "CL.read.1.tlog"
どのプリプロセッサのポインタを使用していますか? – Shepmaster
このタスクにはVisual Studioを使用できます。かなり良いスタンドアローンのプリプロセッサは 'mcpp'です。あなたは 'http:// mcpp.sourceforge.net /'でそれを見つけることができます。 – Geo
まだ実装されていませんが、これは最善の解決策のようです。 Visual Studioを使用すると、正しいパスのように聞こえるため、渡すフラグを別々に設定する必要がなくなります(依存関係とビルドのためのフラグ)。 – Shepmaster