2014-05-19 15 views
0

환경 변수를 사용하여 우리가 사용하는 라이브러리의 경로를 지정합니다. 대부분의 경우 릴리스 된 버전을 가리키고 때로는 개발 버전을 가리 킵니다.

어쨌든 $(MyLib)/path;%(AdditionalIncludeDirectories)을 사용하여 C++ 응용 프로그램을 빌드 할 때도 제대로 작동하지만 프로젝트 리소스를 열 수 없습니다. 그러나, 내가 %(MyLib)/path;%(AdditionalIncludeDirectories)을 사용하면 작동합니다.

이제 차이점은 무엇입니까? 올바른 방법은 $(EnvVar)을 사용하는 것이지만 리소스 편집기의 경우 작동하지 않는 것 같아요. fatal error RC1015: cannot open include file 'afxres.h'.

답변

1

당신은 MSBuild에서 메타 데이터 항목을 참조 할 % (항목)를 사용 : $(EnvVar)가 올바른 방법 인 경우 그리고 왜 Visual Studio에서 내가 오류가 %(AdditionalIncludeDirectories)하지 $(AdditionalIncludeDirectories)

를 사용 않습니다. 그 이름으로 환경 변수를 가지고 있다면 $ (AdditionalIncludeDirectories)를 사용하면 잘 작동하지 않을 것입니다. 따라서 %(MyLib)/path은 단지 /path으로 해결되어야합니다.

prebuild 이벤트에 echo %(MyLib)/path을 넣어 확인할 수 있습니다.

아마도 자원 컴파일러 인 rc.exe를 혼란스럽게하는 데 충분합니다. 어느 버전의 SDK 유틸리티는 Windows 버전 1.0으로 다시 돌아갑니다. 커맨드 라인 옵션과 .rc 스크립트 파일 텍스트 인코딩에 대해 매우 까다 롭고 까다 롭습니다. Windows가 경로 구분 기호로 슬래시를 지원하기 시작한 지 오래 전인 1986 년에는 모두 백 슬래시를 사용해야했습니다.

대신 큰 따옴표를 사용하여 "$(MyLib)\path"을 사용하십시오. MyLib에 공백이 포함 된 경우이를 알아 채지 못할 것입니다. 프로젝트 속성 시트를 사용하여 호의를 베푸십시오. 그러면 누군가가 프로젝트를 2 년 이상 올바르게 구축하는 방법을 여전히 파악할 수있는 가능성이 있습니다.