.cmd
Visual Studio (それぞれ 2005、2008、2010、2012、および 2013) プロジェクトのリンク前ステージ内からスクリプトを実行して、これが完全な再構築かどうかを判断するにはどうすればよいですか?
あなたが求めていることを正確に実行できるかどうかはわかりません-おそらく他の誰かがそれを行う方法を知っています. ただし、別のアプローチを提案します。
私のアプローチは、Lua ライブラリのビルドをリンク前のステップから別の Visual Studio NMake プロジェクトに削除することです。NMake プロジェクトを作成すると、どのタイプのビルド ( buildまたはrebuild ) が発生しているかを知ることができます。
Visual Studio のそれ以降のバージョンでは、単にプロジェクトの種類を "Make" と呼ぶことに注意してください。ここでの説明のために、プロジェクト タイプを「NMake」と呼びます。これは単なる名前の違いであり、基になるビルド プロジェクトは 2 つのバージョン間で同じままであると思います。
簡単なテストとして、2 つの Visual Studio アプリケーションを作成しました。1) バッチ ファイルを呼び出してスタティック ライブラリを作成する NMake プロジェクト、および 2) 手順 1 のライブラリを使用するコンソール アプリケーションです。
NMake プロジェクト
Visual Studio で新しい NMake プロジェクトを作成すると、MS-DOS コマンドを提供できるダイアログが表示されます。
ご覧のとおり、Build、Clean、Rebuild などのコマンドがあります。コマンドを含む上記のダイアログのスクリーン ショットはありませんが、NMake プロジェクトのプロパティは次のとおりです。
私の Build コマンドは、出力ファイル (lua.lib) の存在をチェックするだけです。存在しない場合は、rebuild.batバッチ ファイルを呼び出します。Rebuild コマンドは常にバッチ ファイルを呼び出します。私の Clean コマンドは、出力を削除するだけです。Output コマンドが何に使用されるのかよくわかりませんが、ビルド出力 (lua.lib) へのパスを入力しただけです。
ビルドを実行すると、 lua.lib ファイルが存在しない場合にのみ作成されます。すでに存在する場合は、何も行われません。再構築を行うと、新しい lua.lib ファイルが作成されます。
コンソール アプリケーション
私のコンソール アプリケーションでは、NMake プロジェクトへの参照を追加しました。このようにして、コンソール アプリケーションの前に NMake プロジェクトがビルドされます。コンソール アプリケーションのリファレンス ページは次のとおりです。
また、アプリケーションのリンク段階で入力として lua.lib ファイルを追加しました。
コンソール アプリケーションがビルドされると (ビルド中)、必要に応じて NMake プロジェクトがビルドされ、リンカー ステージで出力 (lua.lib) が使用されます。コンソール アプリケーションが再構築されると (再構築中)、NMake プロジェクトも再構築されます。
他の考え
上記のスクリーン ショットは、プロパティのデバッグ バージョンのみを示しています。プロジェクトでは、リリース バージョンを考慮する必要があります。これを処理するための VS マクロがおそらく存在しますが、C/C++ で何かを行ってから何年も経っているため、よくわかりません。
上記のテストでは、ビルドとリビルドの両方に 1 つのビルド バッチ ファイルを使用しました。明らかに、同じことを行うことも、別のバッチ ファイルを使用することもできます。