문제

오늘은 공식적으로 C ++와 함께하는 첫날입니다.

Windows Server 2003 SP1 용 Visual C ++ 2005 Express Edition 및 Microsoft Platform SDK를 다운로드했습니다. ENSO 프로젝트.

따라서 스콘을 설치 한 후 콘솔에 가서 스콘을 사용하여 컴파일하려고했지만이 오류가 발생했습니다.

C:\oreyes\apps\enso\enso-read-only\src\platform\win32\Include\WinSdk.h(64) : fatal error C1083: Cannot open include file: 'Windows.h': No such file or directory
scons: *** [src\platform\win32\InputManager\AsyncEventProcessorRegistry.obj] Error 2
scons: building terminated because of errors.

이 링크를 확인한 후 :

vs ans psdk

tiffi.h 포함

wndows.h

다음과 같이 설치를 구성했습니다.

alt text

그리고이 스크립트를 실행하십시오

alt text

그리고 IDE에서 아래 파일을 컴파일 할 수있었습니다.

// Test.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <Windows.h>


int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}

그러나 나는 여전히 콘솔에서 그 예외를 얻습니다. 누구든지 스콘 경험이 있습니까?

편집하다

실제로 (그리고 이것을 말하는 것을 잊어 버렸습니다) 나는 "Visual Studio 2005 명령 프롬프트"링크로 명령 프롬프트를 시작했습니다.

나는 이것이 환경 변수의 경로를 포함 할 것이라고 가정합니다. 인쇄 후에는 그렇지 않다는 것을 알았습니다.

 echo %INCLUDE%
 echo %LIB%
 echo %PATH% 

그리고 그들은 존재하지 않았 으므로이 .bat 파일을 만들었습니다.

set PATH=%PATH%;"C:\Program Files\Microsoft Platform SDK\Bin"
set INCLUDE=%INCLUDE%;"C:\ Program Files\Microsoft Platform SDK\Include"
set LIB=%LIB%;"C:\ Program Files\Microsoft Platform SDK\Lib"

그럼에도 불구하고, 스콘은 vars를 복용하지 않는 것을 본다 ... :(

도움이 되었습니까?

해결책

위의 권장 사항을 사용하면 SCONS에서는 작동하지 않습니다. SCONS는 사용자 환경 (경로 및 기타 변수)을 가져 오지 않습니다. 근본적인 문제는 SCONS가 최근 버전의 SDKS/vs를 처리하지 않는다는 것입니다.

나는 때때로 Scons에 기여하고 있으며이 기능 ATM에서 작업하고 있습니다. 바라건대, 곧 SCONS에 포함될 것이지만, 모든 SDK/컴파일러 조합이 다르기 때문에 (때로는 MS조차도. 부러졌다), 그래서 나는 당신에게 데이트를 할 수 없다. 나는 그것이 1.2에 포함되기를 바랍니다 (약 1 개월 안에 출시 될 예정).

다른 팁

포함 파일 경로 (및 다른 것들)를 설정해야합니다. 명령 줄에서 이것은 일반적으로 Visual Studio가 설치 한 배치 파일을 사용하여 수행됩니다. vsvars32.bat (또는 vcvars32.bat VC6과의 호환성).

나는 스콘에 익숙하지 않으므로 해당 도구에 대해 이러한 설정을 구성하는 가장 좋은 방법을 모르지만 표준 MakeFiles의 경우 일반적으로 MakeFile의 라인이 있으며 포함 된 디렉토리 경로와 매크로가 매크로 변수를 설정합니다. 컴파일러를 호출하는 명령의 명령 줄 매개 변수의 일부로 사용됩니다.

또 다른 가능성은 SCONS 프로세스가 vSvars32.bat을 호출하거나 배치 파일로 구성된 명령 줄에서 SCONS 스크립트를 실행하도록하는 것입니다.

요컨대 vsvars32.bat가 어떻게 든 SCONS 구성으로 구성하는 것들을 가져와야합니다.

환경 변수를 설정하는이 파일 (MSVC 2005의 경우)과 유사한 배치 파일이 있습니다.

c:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat

1 단계: Express 설치 폴더에서 유사한 파일 찾기

2 단계: 이러한 대상 세부 사항과 함께 데스크탑에서 바로 가기를 만듭니다. 적절하게 수정 된 경로:

cmd.exe /K "c:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat"

3 단계 : : 이 바로 가기를 통해 DOS 프롬프트를 엽니 다

명령 줄 빌드는 이제이 콘솔 창 내에서 작동해야합니다.

Visual Studio 내에서 컴파일을 위해 Visual Studio를 구성했는지 보여 주지만 어떤 명령 행 환경을 시도했는지 보여주지 않았습니다. 죄송합니다. Express 버전을 시도하지 않았으므로 Pro 이상과 같은 추가 시작 메뉴 바로 가기를 만들지 모르겠습니다. 환경 변수가 이미 설정된 상태에서 적절한 명령 프롬프트를 열면 명령 줄에서 컴파일 할 수 있습니다. 그렇지 않으면 명령 프롬프트를 열 때마다 변수를 직접 설정하거나 배치 스크립트를 실행해야합니다.

스콘이 자동으로이를 수행하면 좋을 것입니다. 지금은 이것을 사용합니다 (SDK 명령 프롬프트에서 실행됩니다. vsvars32.bat 이후에 실행되는 경우 차이가 있는지 확실하지 않습니다).

import os
env = Environment(ENV={'PATH': os.environ['PATH']})

env['ENV']['TMP'] = os.environ['TMP']
env.AppendUnique(CPPPATH=os.environ['INCLUDE'].split(';'))
env.AppendUnique(LIBPATH=os.environ['LIB'].split(';'))

이것은 명령 줄 프롬프트를 사용하여 Visual C ++ 2005 Express로 WXWidget을 컴파일하는 동안 나에게 효과적입니다.

REM Fix Error error C1083 'windows.h'

(컴파일 할 때 사용 /사용 옵션.)

set PDSKWIN=C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2

(오른쪽으로 변경하십시오.)

set INCLUDE=%PDSKWIN%\Include;%INCLUDE%

set LIB=%PDSKWIN%\Lib;%LIB%

그런 다음 컴파일 할 때이 줄을 사용합니다. 나는 단지 추가한다고 믿는다 /useenv 당신의 라인과 모든 것이 잘 작동해야합니다.

vcbuild /useenv /nohtmllog /nologo name.proj (or any file to compile)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top