Pergunta

Hoje é oficialmente o meu primeiro dia com C ++: P

Eu fiz o download do Visual C ++ 2005 Express Edition e Microsoft Platform SDK para Windows Server 2003 SP1, porque eu quero chegar em minhas mãos o código aberto Enso Projeto .

Assim, depois de instalar scons eu fui para o console e tentou compilá-lo usando scons, mas eu tenho esse erro:

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.

Depois de verificar estes links:

VS ans PSDK

Incluir tiffi.h

Wndows .h

Eu consegui configurar minha instalação como esta:

text alt

E mesmo executar este script

text alt

E eu consegui compilar o arquivo abaixo no 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;
}

Mas eu ainda obter essa exceção no console. Alguém tem scons experiência?

Editar

Na verdade (e eu esqueci de te dizer isso) eu comecei o prompt de comando com o link "Visual Studio 2005 Command Prompt".

Eu assumo isto irá incluir os caminhos em variáveis ??de ambiente. Bem depois imprimi-los acho que isso não aconteceu:

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

E eles não estavam presentes, então eu criei este arquivo .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"

Ainda assim, scons seeems não tomar a vars ... :(

Foi útil?

Solução

Usando as recomendações acima não funcionará com scons: não scons não importar o ambiente do usuário (PATH e outras variáveis). O problema fundamental é que scons não lidar com versões recentes do SDKs / VS.

Eu sou um colaborador ocasional de scons, e estou trabalhando sobre este recurso ATM. Esperamos que ele será incluído em breve no scons, mas o recurso é muito mais difícil de implementar de forma confiável do que eu esperava primeiro, em parte porque cada combinação SDK / compilador é diferente (e às vezes até MS não acertar, alguns de seus arquivos .bat estão quebrados), então eu não posso lhe dar uma data. Espero que ele será incluído no 1.2 (a ser lançado em approximatively um mês).

Outras dicas

Você precisa definir o caminho de inclusão de arquivo (e possivelmente outras coisas). Na linha de comando Isso geralmente é feito usando um arquivo em lotes que Visual Studio instala chamado vsvars32.bat (ou vcvars32.bat para compatibilidade com VC6).

Eu não estou familiarizado com scons então eu não sei a melhor maneira de obter essas configurações definidas para essa ferramenta, mas para makefiles padrão normalmente há uma linha no makefile que define uma variável de macro com o caminho de inclusão de diretório e que macro é usado como parte de um parâmetro de linha de comando no comando que invoca o compilador.

Outra possibilidade poderia ser a de ter os scons processar invoke vsvars32.bat ou executar o script scons a partir de uma linha de comando que foi configurado com o arquivo de lote.

Em suma, você precisa obter as coisas que configura vsvars32.bat para as scons configuração de alguma forma.

Haverá um arquivo de lote semelhante a esta (para MSVC 2005) que configura as variáveis ??de ambiente:

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

Passo 1 : Procurar um arquivo similar nas pastas de instalação expressa

Passo 2 : Criar um atalho na área de trabalho com esses detalhes alvo e um caminho adequadamente modificado :

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

Passo 3: Open prompt do DOS através deste atalho

A construção da linha de comando agora deve funcionar a partir desta janela de console.

Você nos mostra como você configurou Visual Studio para compilações dentro do Visual Studio, mas você não nos mostrar o ambiente de linha de comando que você tentou. Desculpe eu não tentei versões expresso então eu não sei se eles criam atalhos do menu Iniciar adicionais como Pro e acima de fazer. Se você abrir um prompt de comando adequado com suas variáveis ??de ambiente já definido, então você pode compilar na linha de comando. Caso contrário, você tem que variáveis ??definir-se ou executar um script em lotes para defini-los, cada vez que você abrir um prompt de comando.

Vai ser bom quando scons faz isso automaticamente. Por agora, eu uso isso (executado a partir de um comando SDK rápida, não tenho certeza se há uma diferença se correr atrás 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(';'))

Isso funciona para mim ao compilar wxWidgets com o Visual C ++ 2005 Express usando a linha de comando prompt:

REM Fix Error error C1083 'windows.h'

(Use / opção useenv ao compilar.)

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

(Mudança para o caminho certo.)

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

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

Então eu uso esta linha durante a compilação. Acredito que basta adicionar /useenv para suas linhas e tudo deve funcionar bem:

vcbuild /useenv /nohtmllog /nologo name.proj (or any file to compile)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top