0

私が持っているプロジェクトの物理ファイル構造は次のようなものです。

  • ソースフォルダ
  • エンジン
    • Folder1
    • Folder2

'Source'、'Engine'、'Engine/Folder1'などにいくつかのファイルがあります。

私のプロジェクトでは、[すべての構成]-> [ソースディレクトリ]に移動し、ソース、エンジン、エンジン/フォルダー2などを含めました。ただし、「Foo.h」などを含めようとすると、ファイルが見つからないというエラーが発生します。別のフォルダ。すべての前に../Folder1/を置く必要がないようにする方法はありますか?

4

2 に答える 2

1

すべての前に../Folder1/を置く必要がないようにする方法はありますか?

はいあります。答えはいくつかの要因に依存し、私はいくつかを逃すと確信しています。

以下を確認してください。

  • コンパイラ設定で、「C /C++」の下の「追加のインクルード」をチェックします
  • 「VC++」で「ディレクトリを含める」の値もチェックインします
  • 「C/C++/プリプロセッサ」の「標準インクルードパスを無視する」の設定を確認してください
  • プリコンパイル済みヘッダーの設定を確認してください
  • ソースファイルとコンパイラ設定の「#define」/「#undef」を確認してください
  • プロジェクトが使用または継承している可能性のあるプロパティシートを確認してください

(<foo.h>ではなく) "foo.h"を使用する場合、プリプロセッサは最初にプロジェクト固有のフォルダを検索し、最後にIDE固有のフォルダを検索します。<foo.h>を使用する場合は、最初に標準のインクルードフォルダーから開始します。たとえば、標準のランタイムライブラリに必要なフォルダーなどです。

ファイルが「../foo.h」を使用する場合、そのファイルを含むファイルの場所からの相対パス。トリッキーな例外があります。

プリプロセッサがインクルードパスを見つける方法に影響を与える可能性のあるものは他にもたくさんあります。プリプロセッサが特定のファイルで何をしているのかわからない場合は、プリプロセッサ設定で[ファイルへの前処理]をオンにすることで、プリプロセッサの出力を表示できます。このファイルには、プリプロセッサが終了した後、コンパイラが作業を開始する前のファイルのソースコードが表示されます。

より多くの経験、特にフォルダ/プロジェクト構造とファイルを含める方法の明確な戦略により、全体がはるかに簡単になります。たとえば、各インクルードファイルの最初の非コメント行として「#pragmaonce」があることを確認してください。

これにより、次のステップのアイデアがいくつか得られることを願っています。幸運を!

于 2010-08-10T10:53:29.710 に答える
0

これは良い習慣だと思います。

  • 含まれているファイルパスで「..」を使用する必要がない場合は、相対パスを使用します
  • 「..」を使用する必要がある場合は、絶対パス(つまり、ソースファイルのルートフォルダーからの相対パス)を使用します。

絶対パスを機能させるには、ルートソースフォルダーを(プロジェクトのファイルの場所に対して)インクルードディレクトリリストに追加します。

于 2010-08-10T10:56:04.393 に答える