2011-08-01 4 views
45

라이브러리를 사용하는 콘솔 응용 프로그램과 라이브러리가 있습니다. 라이브러리에는 소스 및 헤더 파일이있는 폴더가 있습니다.Visual Studio 프로젝트에서 상대 경로를 정의하는 방법은 무엇입니까?

내 프로젝트가 하위/내부 디렉토리에 있지만 포함시키고 자하는 라이브러리 디렉토리가 상위/상위 디렉토리에 있습니다.

내 프로젝트 디렉토리 :

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

파일을 포함 현재 위치 :

H:\Gmail_04\gsasl-1.0\src 

어떻게 부모/상위 디렉토리에 폴더를 포함하는 프로젝트 디렉토리에 대한 상대 경로를 사용할 수 있습니까? 내가 바로 당신을 얻을 경우

답변

35

, 당신은 ..\..\src

+5

시도해 보았지만이 폴더에 포함 된 파일을 찾을 수 없습니다. 하지만 완벽한 경로를 제공하면 잘 작동합니다. –

+0

아마 프로젝트 디렉토리가 당신이 생각하는 것과 다르지 않을까요? 어쩌면 그것은 한 단계 더 깊을까요? – MByD

+1

이 경우라면 어떻게해야합니까? 프로젝트 디렉토리에 대해 잘 알고 있다면 경로는 무엇입니까? –

111

대신 상대 경로를 사용하여, 당신은이를 달성하기 위해 VS의 사전 정의 된 매크로를 사용할 수 있어야합니다.

$(ProjectDir).vcproj 파일의 디렉토리를 가리키고, $(SolutionDir).sln 파일의 디렉토리입니다. 프로젝트를 열 때

당신은 가능한 매크로의 목록을,
속성에 → 구성 속성 →   C/C++ → 일반
을 가서 세 개의 점 명중 :

project properties

을 곧 나오는 대화 상자에서 매크로을 클릭하면 Studio에서 미리 정의한 매크로를 볼 수 있습니다 (참조). 그 의미에 대한 88,895,403,210) :

additional include directories

당신은 $라운드 괄호)주의 ($(MACRO_NAME)을 입력하여 매크로를 사용할 수 있습니다.

+3

이들은 ** 둥근 괄호() **, _yot_ curvy braces {}입니다. 나는 실수로 후자와 함께 15 분 동안 매크로를 사용하려고 시도했다. – hauzer

+1

@hauzer : 힌트를 주셔서 감사합니다. 내 대답에 귀하의 의견을 포함 시켰습니다. – eckes

+1

테마가 너무 어둡습니다 –

14

내가 같은 구문을 사용하고이 전 :

$(ProjectDir)..\headers 

등이 지적했듯이

..\headers 

, 시작 디렉토리 프로젝트 파일에있는 하나 (vcproj 또는 vcxproj) 주 코드가있는 곳이 아닙니다.

+0

VS2013 업데이트 3에서는 U2와 U1에 대해 잘 모르는 것처럼 보입니다. – iFreilicht

+7

($ ProjectDir)이 $ (ProjectDir)이 아니어야합니까? –

-1

Visual Studio 2013에서는 모든 소스 파일의 속성을 볼 수 있습니다. 솔루션 탐색기를 통해 파일을 클릭하십시오.

이러한 속성 중 하나는 "상대 경로"입니다.

+1

이 옵션이 없습니다. – JerryGoyal

2

기본적으로 정의한 모든 경로는 상대적입니다. 문제는 무엇인가? 몇 가지 옵션이 있습니다 : 1. 파일 또는 경로 앞에 아무 것도 지정하지 마십시오.예 : "mylib.lib". 이 경우 파일은 출력 디렉토리에서 검색됩니다. 그러나 ".. \"를 추가하면 .sln 파일이있는 실제 경로에서 경로가 계산됩니다. $ (SolutionDir)과 같은 매크로 뒤에는 백 슬래시 "\"를 추가 할 필요가 없습니다. $ (SolutionDir) mylibdir \ mylib.lib을 사용하십시오. 그냥 작동시키지 못하는 경우에는 메모장에서 외부로 프로젝트 파일을 열고 확인하십시오.

관련 문제