2010-07-25 3 views
3

x64 컴퓨터에서는 C:\Program Files (x86)으로 확장되고 x86 컴퓨터에서는 C:\Program Files으로 확장되어야하는 ProgramFiles 환경 변수로의 경로를 얻으려고합니다. 이 C:\Program Files 매번로 확장하고이 잘못x64 시스템의 nmake에서 ProgramFiles 환경 변수에 액세스하는 방법은 무엇입니까?

all: 
     echo $(PROGRAMFILES) 

:

문제점은 NMAKE 파일에 내가 할 경우이다. 의 x64 시스템에서

환경 세부 정보 :

ProgramFiles(x86)=C:\Program Files (x86) 
ProgramW6432=C:\Program Files 

:: this one is special, if will return different results based on current process x86/x64 
ProgramFiles=C:\Program Files (x86) or C:\Program Files 
PROCESSOR_ARCHITECTURE=x86 or x64 

이제 업데이트 된 질문 방법이 모두 x86 및 x64 시스템에서 작동하는 방식으로, NMAKE 내부의 x86 프로그램 파일의 위치를 ​​얻을 수 있습니다?

답변

2

이 표현은 32 비트 및 64 비트에서 실행 nmake로, 윈도우 7 64 비트에서 작동하는 것 같다

LC = %%PROGRAMFILES(x86)%%\Microsoft SDKs\Windows\v7.0A\bin\lc.exe 
1

x64 시스템을 사용중인 경우 64 비트 프로그램 환경 내에서 %ProgramFiles%C:\Program Files을 가리키는 것이 전적으로 법적입니다. x86 대응 제품을 얻는 데 사용해야하는 변수는 %ProgramFiles(x86)%입니다.

PROCESSOR_ARCHITECTURE 환경 변수 (예 : AMD64으로 설정)에 설정된 현재 OS의 아키텍처를 평가하면 어느 것을 사용할 지 결정할 수 있습니다. 또는 단순히 %ProgramFiles(x86)%을 얻으려고 시도하고 비어있는 경우 %ProgramFiles%의 내용을 얻으십시오.

또 다른 방법은 32 비트 cmd.exe을 시작하고 거기에서 make를 실행하는 것입니다. 그것은 C:\Windows\SysWOW64에 있습니다.

%%PROGRAMFILES(x86)%% 

예 :

+0

나는 추측을 더 잘 설명하기 위해 질문을 업데이트했다. (주로 내가 포함 디렉토리를 적절하게 찾기 위해이 값을 필요로한다.) 또한 레지스트리에서 값을 읽는 방법을 알고 있지만 nmake가이 값을 지원하지 않는다고 확신합니다. – sorin