ライブラリと、ライブラリを使用するコンソールアプリケーションがあります。ライブラリには、ソースファイルとヘッダーファイルを含むフォルダーがあります。
私のプロジェクトはchild/innerディレクトリにありますが、私が含めたいライブラリディレクトリはparent/upperディレクトリにあります。
私のプロジェクトディレクトリ:
H:\Gmail_04\gsasl-1.0\lib\libgsaslMain
インクルードファイルは次のとおりです。
H:\Gmail_04\gsasl-1.0\src
親/上位ディレクトリにあるフォルダを含めるために、プロジェクトディレクトリへの相対パスを使用するにはどうすればよいですか?
私があなたを正しいと思うなら、あなたは..\..\src
が必要です
相対パスを使用する代わりに、VSの定義済みマクロを使用してこれを実現することもできます。
$(ProjectDir)
は.vcproj
ファイルのディレクトリを指し、$(SolutionDir)
は.sln
ファイルのディレクトリです。
プロジェクトを開くと、利用可能なマクロのリストが表示されます。
Properties→Configuration Properties→C/C++→General
そして3つの点を打ちます:
次のダイアログで、Macrosを押して、Studioで事前定義されているマクロを確認します(意味については MSDN を参照してください):
$(MACRO_NAME)
と入力してマクロを使用できます($
およびroundブラケットに注意してください)。
以前にこのような構文を使用しました。
$(ProjectDir)..\headers
または
..\headers
他の人が指摘したように、開始ディレクトリは、プロジェクトファイルが存在するディレクトリ(vcproj
またはvcxproj
)であり、メインコードの場所ではありません。
デフォルトでは、定義するすべてのパスは相対パスになります。質問は:何に対して?いくつかのオプションがあります:
$(SolutionDir)などのマクロの後には、円記号「\」を追加する必要がないことに注意してください。 $(SolutionDir)mylibdir\mylib.libを使用するだけです。機能しない場合は、メモ帳からプロジェクトファイルを外部で開き、確認してください。