問題タブ [precompiled-headers]
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.
c++ - Visual Studio 2010、Intellisense、PCH:醜いstdafx.hに代わるものは何ですか?
最近VisualStudio2010に切り替えましたが、boost
ライブラリを使用しているときにIntellisenseが表示されるのに30分もかからないようにするために、Microsoftの提案ではプリコンパイル済みヘッダーを使用しているようです。
以前にそれらを使用したことがないことを除いて(Ugly ATL Wizards(TM)によって強制された場合を除く)、私はそれらがどのように機能するかを調べるために周りを検索しました。
基本的に、BigCentralizedのstdafx.h
アプローチは明らかに間違っているようです。すべてのソースに大量のヘッダーファイルを(安価にでも)インクルードしたくありません。私はWindowsライブラリを使用していないので(C ++ / CLIの上位レベルのラッパーを作成し、外の世界との通信に.NETを使用します)、「変更されない巨大なヘッダーのトラック全体」を持っていません。ちょうどboost
そして標準ライブラリヘッダーが散らばっています。
この問題には興味深いアプローチがありますが、これを機能させる方法を完全に理解することはできません。各ソースファイルは2回コンパイルする必要があるようです(間違っている場合は修正してください)。1回は/ Ycを使用し、もう1回は/Yuを使用します。これにより、ビルドシステムを手動で調整する必要がある開発者に負担がかかります。
「ソースファイルごとに1つのプリコンパイル済みヘッダーを自動的に生成する」トリック、または少なくともいくつかの「ベストプラクティス」を見つけたいと思っていましたが、ほとんどの人は世界をに含めることに満足しているようですstdafx.h
。
ソースファイルごとにプリコンパイル済みヘッダーを使用するために利用できるオプションは何ですか?ビルド時間は(急上昇しない限り)あまり気にしません。インテリセンスを高速に動作させたいだけです。
c++ - stdafx.h でヘッダー ガードが不要なのはなぜですか?
プリコンパイル済みヘッダーでヘッダーガードが使用されない理由がわかりません...何かアイデアはありますか?
c++ - ビルド時に欠落している .pch ファイルを修正するには?
Visual Studio で C++ ソリューションをビルドすると、xxxxx.pch ファイルが見つからないというメッセージが表示されます。プリコンパイル済みヘッダーを取り戻すために不足している設定はありますか?
完全を期すための正確なエラーは次のとおりです。
android - Android NDK でプリコンパイル済みヘッダー ファイルを使用する方法
C++ ファイルをコンパイルするために必要な .pch ファイルがあります。Android NDK を使用していくつかの C++ ファイルからライブラリを作成し、それを Java プログラムで使用してライブラリ関数を呼び出しています。コンパイラが認識できるように、.pch ファイルを含める方法または場所を誰かに教えてもらえますか。
c++ - プリコンパイル済みヘッダーを作成するときに、オブジェクトも作成されるのはなぜですか?
make ファイル内に .pch を作成したいと考えています。cl /nologo /c /YcPrecompiled.hpp /FpPrecompiled.pch Precompiled.cpp
私を混乱させたのは、このコマンドが Precompiled.obj という名前のオブジェクトも作成する理由です
このオブジェクトを finale exe にリンクする必要がありますか?
Web で検索したところ、msdn でチュートリアルを見つけました: http://msdn.microsoft.com/en-us/library/d9b6wk21(v=VS.71).aspx 1 行わかりません:
pch を作成するとき、なぜ applib.cpp と myapp.cpp が必要なのですか。また、.pch ファイルを除いて、applib.obj、myapp.obj の 2 つのオブジェクトも作成されます。なぜですか?
どんな指摘も歓迎します。どうもありがとう!
c - gch ファイルをアンコンパイルする
バージョン管理に追加していない .h ファイルを誤って削除してしまいましたが、まだ .h.gch があります。.gch をアンコンパイルする方法はありますか?
c++ - プリコンパイル済みヘッダー C++
推定
DirectX ヘッダーをプリコンパイル済みヘッダーとして使用してベース グラフィック エンジンを実装する C++ プロジェクト (静的) ライブラリ 'A' があります。
また、「A」ヘッダーをプリコンパイル済みヘッダーとして使用してゲーム エンジンを実装するプロジェクト (静的) ライブラリ「B」があります。
そして、以前の 2 つのプロジェクトを使用してゲームを実装する C++ プロジェクト 'C' があります。
今私の質問は:
プロジェクト 'C' にプロジェクト 'B' のみを含めて (DirectX ヘッダーと 'A' ヘッダー) を含めない方法はありますか?
またはその一方で
(DirectX とプロジェクト 'A') をプロジェクト 'B' に埋め込む方法はありますか?
タンク
c++ - cmake を使用してソース入力ファイルを条件付きで生成する
C++ プロジェクトで cmake を使用しています。GCC でプリコンパイル済みヘッダーを使用したい。
cmake
一度実行してから、実行時にmake
次のアクションを実行したい:
- ソース ツリー全体でカスタム ツール (python スクリプト) を実行します。一部のサブディレクトリに precompiled.h ヘッダーを生成します。その目的は、#include の *.h と *.cpp をスキャンし、それらを共通のプリコンパイル済み.h ファイルに移動することです。
g++ -c precompiled.h -o precompiled.h.gch
ステップ 1 の後に precompiled.h ファイルが変更された場合にのみ、GCC のプリコンパイル済みヘッダー ( ) を生成します。- 古いターゲットをビルドします(ステップ2の後。.gchファイルを使用したいため)
依存関係を追加することができたので、ターゲットをビルドするたびに、python スクリプトのターゲットが実行されます (すべてのターゲットが単一の global_init ターゲットに依存する必要があるため、これは醜いです)。また、python スクリプトを変更できるので、不要な場合は precompiled.h を変更しません。
しかし、次に何をすべきかわかりません。カスタムスクリプトを実行する必要があることをcmakeに伝え、その後、precompiled.h.gchを作成する必要があるかどうかを判断する方法はありますか? これで常にビルドされます (このファイルには多くの #include が含まれているため、時間がかかります)。基本的:
- Python スクリプトを実行 -> precompiled.h が更新される場合があります
- precompiled.h タイムスタンプを調べて、それが新しい場合 -> precompiled.h.gch をビルドします
- 標準のコンパイル手順
私は多くの場所を見てきましたが、依存関係を計算するcmake(およびmake)の方法は、このタスクを達成するには弱すぎるようです。
この質問 では、lazycpp が実行された後に常に遅延 C++コンパイルが発生します。私の場合、これは最適ではありません。
c++ - プリコンパイル済みヘッダーと Visual Studio
Visual Studio ソリューション パラメーターを設定して、ソリューション全体をビルドせずにプリコンパイル済みヘッダーを作成する方法はありますか。具体的には、それ自体が多くのプロジェクトを持つ巨大な C++ ソリューションです。
ありがとうございました。
visual-c++ - 暗黙のプリコンパイル済みヘッダーの依存関係を回避していますか?
Boost や Windows などのライブラリ ファイルをインクルードするために、プリコンパイル済みヘッダーを使用しています。
ourは、プリコンパイル済みヘッダー コマンド ( 、、および)を操作するためにprecompiled.h
、各ファイルの先頭に明示的に含まれています。必要に応じて受け入れました。.cpp
/Yc
/Yu
/Fp
ただし、最近、/FI
ソース ファイルの先頭にインクルード ファイルを強制的に配置する を見つけました。precompiled.h
明示的に含めるのではなく、強制的に含めるために使用してみましたが、確かに機能しました。
これにより、プリコンパイル済みヘッダー (私が考える限り、これは実装の詳細です) を省略し、ファイルの実際の依存関係のみを指定することができます。
残念ながら、によって提供される暗黙の依存関係に依存していないことを検証する唯一の方法は、どのファイルに問題があるかを確認precompiled.h
せずにビルドを定期的に実行することです。
これはかなり面倒です。より良い方法はありますか?/FI"precompiled.h"