Pregunta

Hoy es oficialmente mi primer día con C ++: P

He descargado Visual C ++ 2005 Express Edition y Microsoft Platform SDK para Windows Server 2003 SP1, porque quiero tener el código abierto Proyecto Enso .

Entonces, después de instalar scons, fui a la consola e intenté compilarlo usando scons, pero recibí este error:

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.

Después de verificar estos enlaces:

VS y PSDK

Incluir tiffi.h

Wndows .h

He logrado configurar mi instalación de esta manera:

texto alternativo ??

E incluso ejecuta este script

texto alternativo ??

Y logré compilar el siguiente archivo en el 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;
}

Pero sigo teniendo esa excepción en la consola. ¿Alguien tiene experiencia en scons?

EDIT

En realidad (y olvidé decirte esto) comencé el símbolo del sistema con el enlace "Visual Studio 2005 Command Prompt".

Supongo que esto incluirá las rutas en las variables de entorno. Bueno, después de imprimirlos, me parece que no:

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

Y no estaban presentes, así que creé este archivo .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"

Aun así, los scons ven que no deben tomar las variables ... :(

¿Fue útil?

Solución

El uso de las recomendaciones anteriores no funcionará con scons: scons no importa el entorno del usuario (PATH y otras variables). El problema fundamental es que scons no maneja versiones recientes de SDK / VS.

Soy un colaborador ocasional de scons, y estoy trabajando en esta función ATM. Con suerte, se incluirá pronto en scons, pero la característica es mucho más difícil de implementar de manera confiable de lo que esperaba, en parte porque cada combinación de sdk / compilador es diferente (y a veces incluso MS no lo hace bien, algunos de sus archivos .bat están rotos), así que no puedo darte una cita. Espero que se incluya en 1.2 (se lanzará en aproximadamente un mes).

Otros consejos

Debe configurar la ruta del archivo de inclusión (y posiblemente otras cosas). En la línea de comandos, esto se hace normalmente usando un archivo por lotes que instala Visual Studio llamado vsvars32.bat (o vcvars32.bat para compatibilidad con VC6).

No estoy familiarizado con scons, por lo que no conozco la mejor manera de configurar estos ajustes para esa herramienta, pero para los archivos make estándar, generalmente hay una línea en el archivo make que establece una variable de macro con la ruta del directorio de inclusión y esa macro se usa como parte de un parámetro de línea de comando en el comando que invoca el compilador.

Otra posibilidad podría ser que el proceso scons invoque vsvars32.bat o ejecute el script scons desde una línea de comando que se ha configurado con el archivo por lotes.

En resumen, necesita obtener las cosas que vsvars32.bat configura de alguna manera en la configuración de scons.

Habrá un archivo por lotes similar a este (para MSVC 2005) que configura las variables de entorno:

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

Paso 1 : encuentre un archivo similar en las carpetas de instalación Express

Paso 2 : cree un acceso directo en el escritorio con estos detalles de destino y una ruta modificada adecuadamente :

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

Paso 3: Abra el indicador de DOS a través de este acceso directo

La compilación de línea de comando ahora debería funcionar desde esta ventana de consola.

Nos muestra cómo configuró Visual Studio para compilaciones dentro de Visual Studio pero no nos mostró qué entorno de línea de comandos intentó. Lo siento, no he probado las versiones Express, así que no sé si crean accesos directos adicionales al menú Inicio como Pro y superior. Si abre un símbolo del sistema adecuado con sus variables de entorno ya configuradas, puede compilar en la línea de comandos. De lo contrario, debe establecer las variables usted mismo o ejecutar un script por lotes para establecerlas, cada vez que abra un símbolo del sistema.

Estará bien cuando scons haga esto automáticamente. Por ahora, uso esto (ejecutar desde un símbolo del sistema de SDK, no estoy seguro de si hay una diferencia si se ejecuta después de 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(';'))

Esto funciona para mí al compilar wxwidgets con Visual C ++ 2005 Express utilizando la línea de comandos:

REM Fix Error error C1083 'windows.h'

(Use / useenv opción al compilar.)

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

(Cambiar a la derecha)

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

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

Luego uso esta línea cuando compilo. Creo que solo agregue / useenv a sus líneas y todo debería funcionar bien:

vcbuild /useenv /nohtmllog /nologo name.proj (or any file to compile)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top