0

インクルード ヘッダー ファイルとプロジェクトの依存関係の要件は何ですか?

これは非常に基本的な質問のように思えますが、問題の本質に迫ろうとしています。(目的: 設計、リファクタリング、自動化の可能性)。

さまざまなタイプのヘッダーを見てきました。

<c++ standard headers>
<core library headers>
<external library headers>
<local project headers>
  • 「インクルード」ディレクトリを見た場合、ヘッダーが C++ 標準ヘッダーであることをどのように認識できますか?

[以前は、オプションまたはどこかに、参照へのパスを表示する場所がありました。もう見つからない。まだありますか? ]

  • 外部ライブラリ ヘッダー (ライブラリ タイプのプロジェクト) を含める場合は、通常、次のすべてを行う必要があります。

    a)「インクルード」ファイルの場所に関するプロジェクトの知識を与える

    b) lib をリンクする

    c) プロジェクトを依存関係としてソリューションに追加します。

私は a) と b) をプロパティ シートの参照を通じて行うことを好みます。もちろん、依存ライブラリのプロパティ シートには、依存関係、ライブラリ ディレクトリ、インクルード ディレクトリのリストがあります。(3つのステップすべてを行う必要がありますか?)

  • ブーストのような「コア ライブラリ ヘッダー」を含める場合、ソリューションにブースト プロジェクトを含める必要はありません(プロジェクトに必要なファイルの場所を示すブーストのプロパティ シートがあります)。
    どうして ??????

プロジェクトを依存関係としてソリューションに追加する必要がある場合は、どうすればわかりますか?

ライブラリを依存関係として追加する必要があるのはいつですか? (つまり、boost のようなライブラリを依存関係として追加する必要がないのはなぜですか?)

これらのライブラリには特別なものがあるので、それらを含める必要はありませんか?

ライブラリを作成するときに、ヘッダー ファイルを使用するすべてのソリューションにライブラリを依存関係として含める必要がないようにするには、どうすればよいですか?

4

1 に答える 1

0

私の質問への答え-私はそれを未回答のままにしないでください-は非常に簡単です:それは選択の問題です!

他のプロジェクトをソリューションに含めることを選択します。ある時点でそれらを変更でき、それらのプロジェクトを変更すると再構築が必要になる可能性があるため、作業中のプロジェクトに影響します。

サードパーティのオープンソースライブラリ(例:boost)のように、変更される可能性が低いプロジェクトは含めません。

$(INCLUDE)問題の他の項目の1つ:C++標準ヘッダーはどこにありますか...含まれているディレクトリへのパスを示す環境変数があります。残念ながら、システム環境変数として設定されていません...コードを介してどのようにアクセスできるかわかりません。

于 2012-12-18T02:12:33.907 に答える