web-dev-qa-db-ja.com

Visual Studioプロジェクトで相対パスを定義する方法は?

ライブラリと、ライブラリを使用するコンソールアプリケーションがあります。ライブラリには、ソースファイルとヘッダーファイルを含むフォルダーがあります。

私のプロジェクトはchild/innerディレクトリにありますが、私が含めたいライブラリディレクトリはparent/upperディレクトリにあります。

私のプロジェクトディレクトリ:

H:\Gmail_04\gsasl-1.0\lib\libgsaslMain

インクルードファイルは次のとおりです。

H:\Gmail_04\gsasl-1.0\src

親/上位ディレクトリにあるフォルダを含めるために、プロジェクトディレクトリへの相対パスを使用するにはどうすればよいですか?

54
Ali Ahmed

私があなたを正しいと思うなら、あなたは..\..\srcが必要です

39
MByD

相対パスを使用する代わりに、VSの定義済みマクロを使用してこれを実現することもできます。

$(ProjectDir).vcprojファイルのディレクトリを指し、$(SolutionDir).slnファイルのディレクトリです。

プロジェクトを開くと、利用可能なマクロのリストが表示されます。
Properties→Configuration Properties→C/C++→General
そして3つの点を打ちます:

project properties

次のダイアログで、Macrosを押して、Studioで事前定義されているマクロを確認します(意味については MSDN を参照してください):

additional include directories

$(MACRO_NAME)と入力してマクロを使用できます($およびroundブラケットに注意してください)。

140
eckes

以前にこのような構文を使用しました。

$(ProjectDir)..\headers

または

..\headers

他の人が指摘したように、開始ディレクトリは、プロジェクトファイルが存在するディレクトリ(vcprojまたはvcxproj)であり、メインコードの場所ではありません。

21

デフォルトでは、定義するすべてのパスは相対パスになります。質問は:何に対して?いくつかのオプションがあります:

  1. ファイルまたはパスの前に何も指定しない。例:「mylib.lib」。その場合、ファイルは出力ディレクトリで検索されます。
  2. 「.. \」を追加すると、パスは.slnファイルが存在する実際のパスから計算されます。

$(SolutionDir)などのマクロの後には、円記号「\」を追加する必要がないことに注意してください。 $(SolutionDir)mylibdir\mylib.libを使用するだけです。機能しない場合は、メモ帳からプロジェクトファイルを外部で開き、確認してください。

5