visual-c++ path environment scons include

visual c++ - error fatal C1083: No se puede abrir el archivo de inclusión: ''Windows.h'': y scons



visual-c++ path (6)

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

Soy colaborador ocasional de scons y estoy trabajando en esta característica ATM. Con suerte, se incluirá pronto en scons, pero la función 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).

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 en mis manos el proyecto de código abierto Enso .

Entonces, después de instalar scons fui a la consola e intenté compilarlo usando scons, pero obtuve 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 consultar estos enlaces:

VS y PSDK

Incluir tiffi.h

Wndows.h

Pude configurar mi instalación así:

texto alternativo http://img404.imageshack.us/img404/9210/vcdirsdq7.png

E incluso ejecutar este script

texto alternativo http://img404.imageshack.us/img404/5895/registrationcn0.png

Y logré compilar el archivo a continuación 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 todavía tengo esa excepción en la consola. ¿Alguien tiene experiencia con scons?

EDITAR

De hecho (y olvidé decirte esto), inicié el símbolo del sistema con el enlace "Símbolo del sistema de Visual Studio 2005".

Supongo que esto incluirá las rutas en las variables de entorno. Bien 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"

Aún así, scons no toma los vars ... :(


Esto funciona para mí mientras compilo wxwidgets con Visual C ++ 2005 Express utilizando el indicador de línea de comando:

REM Fix Error error C1083 ''windows.h''

(Utilice la opción / useenv 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 simplemente agregue /useenv a sus líneas y todo debería funcionar bien:

vcbuild /useenv /nohtmllog /nologo name.proj (or any file to compile)


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 : encuentra 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 adecuadamente modificada :

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

Paso 3: abre el prompt de DOS a través de este atajo

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


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

No estoy familiarizado con los scon, así que no sé cuál es la mejor manera de configurar estos parámetros para esa herramienta, pero para los archivos make normales suele haber una línea en el archivo MAKE que establece una variable de macro con la ruta del directorio de inclusión y esa macro es utilizado 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 haya configurado con el archivo por lotes.

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


Nos muestra cómo configuró Visual Studio para compilaciones dentro de Visual Studio, pero no nos mostró qué entorno de línea de comandos había intentado. Lamento no haber probado las versiones Express, así que no sé si crean accesos directos adicionales en el menú Inicio como Pro y arriba. Si abre un símbolo del sistema adecuado con sus variables de entorno ya establecidas, entonces puede compilar en la línea de comando. De lo contrario, debe establecer las variables usted mismo o ejecutar un script por lotes para configurarlas, cada vez que abra un símbolo del sistema.


Sería bueno cuando scons hace esto automáticamente. Por ahora, uso esto (se ejecuta 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('';''))