Visual Studio のプリコンパイル済みヘッダーは、プリコンパイルする必要があるすべてを含むヘッダー ファイルに基づいており、通常、標準ライブラリなど、ほとんど変更されないヘッダー ファイルが含まれています。設定で「プリコンパイル済みヘッダーを生成する」に設定されているstdafx.cppに接続されており、stdafx.hのみが含まれています。
次に、Visual Studio は、すべてのファイルに最初のプリプロセッサ定義として stdafx.h を含めるように強制します。これは、その前に含まれるヘッダーの問題や、stdafx.h の解析に影響を与える変更された #define マクロの問題を回避するためです。
この動作を g++ にマッピングする最も簡単な方法は、stdafx.h のみをプリコンパイルし、他のヘッダーを通常どおりインクルードすることだと思います。これは、Visual C++ で行うことと似ています。また、stdafx の名前を「precompiled_.h など」のような馬鹿げていない名前に変更することもできます。代わりにこのファイルを使用するように Visual Studio をセットアップするのは簡単です。
g++ の make ファイルを使用してこの種のシステムを実装したところ、ある程度のパフォーマンスが得られましたが、Visual Studio でプリコンパイルされたヘッダーから得られるのと同じ種類のパフォーマンス向上を得ることができませんでした。これは少し前のことで、g++ はその後改善された可能性があります。CMake でプリコンパイル済みヘッダーを使用して Visual Studio プロジェクトを生成することができました。Makefile の生成にはまだ試していませんが、問題はないはずです。
Visual Studio には、コンパイル速度を向上させるための他のトリックがいくつかあります。1 つは、同じ設定の多数の cpp ファイルを 1 つのバッチでコンパイルすることです。これは通常ユニティ ビルド システムと呼ばれるものを使用して手動で行うことができます。このシステムでは、複数の cpp ファイルを 1 つのファイルに含めて一度にビルドし、ヘッダーの解析とディスク io を節約します。