문제

Visual Studio 2003에서는 사전 건설 이벤트에서 환경 변수를 설정하려고 시도하여 컴파일 단계에서 사용될 수 있지만 값은 전파되지 않은 것 같습니다. 예를 들어, 사전 건축 이벤트 에이 내용이 포함 된 경우 (직접 또는 배치 파일 내에) :

set MY_LIB_VERSION=1.0.0

그리고 추가 정보는 다음과 같습니다.

c:\path\to\library\my_lib_v$(MY_LIB_VERSION)\include

그런 다음 컴파일이 작동 할 것으로 예상합니다. my_lib_v1.0.0 디렉토리가 존재합니다. 그러나 대신, 나는 얻는다

c:\path\to\prog\my_prog.c(22) : fatal error C1083: Cannot open include file: 'my_lib.h'
Project : warning PRJ0018 : The following environment variables were not found:
$(MY_LIB_VERSION)

예비 건축 이벤트에서 설정된 환경 변수가 컴파일 단계로 전파되지 않지만 무언가를 놓치고있을 수 있습니다.

건축 전 이벤트에서 환경 변수를 설정하고 컴파일 단계에서 사용하려면 어떻게해야합니까?

(또는 라이브러리 버전을 한 번 정의하고 추가적인 CludedEctories 및 AdditionalibraryDirectories에 여러 번 사용하는 다른 현명한 방법도 마찬가지로 도와줍니다.)


업데이트: 나는 다른 방식으로 우리의 문제를 해결하게되었습니다. 우리는 전복을 사용하고 있으며 svn:externals 호출 된 프로젝트 소스의 하위 디렉토리에있는 속성 dependencies, 프로젝트의 결제가 추가로 체크 아웃 할 수 있도록 <svn_path>\libraries\my_lib_v1.0.0 그리고 그것을 부릅니다 dependencies\my_lib 작업 사본에서. 그런 다음 프로젝트 설정을 참조 할 수 있습니다 dependencies\my_lib\include 그리고 그런 것과 같습니다. 버전 1.0.1로 업그레이드 my_lib 그런 다음 단순히 편집의 문제입니다 svn:externals 속성 - 코드 및 프로젝트 설정을 변경할 필요가 없었습니다.

도움이 되었습니까?

해결책

이 도구를 조사 할 수 있습니다. http://workspacewhiz.com/solutionbuildenvironmentreadme.html

우리는 항상 그것을 사용하여 빌드 환경에서 환경 변수를 관리합니다.

다른 팁

사전 건축 단계에서 환경 변수를 설정하려고 시도한 적이 없다는 것을 인정해야하며, 왜 그것이 반드시 작동하지 않는지 알 수 있습니다 (배치 파일을 실행하면 별도의 프로세스를 트리거 할 가능성이 높지만 원할 것입니다. 부모 프로세스의 환경을 조작하십시오).

내가 사용하고 있었지만 Visual Studio를 시작하기 전에 필요한 설정을 결정할 때만 작동하는 해결 방법은 필요한 환경 변수를 설정 한 다음 적절한 솔루션 파일로 Visual Studio를 시작하는 배치 파일을 만드는 것입니다. 아래 의이 배치 파일의 골격을 재현했습니다.

REM
REM Set up VS environment with defaults (this is for 2008) - need to do this first
REM
call "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat"
REM
REM Set the environment variables required by the project
REM
set BOOST_BASE=C:\Boost\include\boost-1_35
REM
REM If you need to manipulate the path, do it here
REM
REM
REM Finally, start VS with the appropriate solution file
REM
devenv MyProjectWithBoost.sln

SET 명령을 사용하여 설정된 환경 변수는 일시적이며 설정된 프로세스의 수명에 대해서만 지속됩니다. 프로세스가 만료되면 즉시 만료되며 다른 프로세스에서는 볼 수 없습니다.

Visual Studio Pre-Build 이벤트는 별도의 프로세스입니다. 그 과정이 만료되면 해당 환경 변수가 중단됩니다.

환경 변수가 당신이 원하는 것이라고 확신합니까? 중앙 네트워크 위치에있는 텍스트 파일에서 값을 설정하여이를 수행 할 수 있습니까?

편집하다: Windows에서 환경 변수를 지속적으로 변경하려면 수행 할 수 있지만 세트를 호출하지 않고 일부 Windows API를 호출하는 것이 포함됩니다. 예를 들어 http://code.activestate.com/recipes/416087/

인터넷 검색을 시도하십시오 환경 가변 창이 지속되는

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top