Domanda

Oggi è ufficialmente il mio primo giorno con C ++: P

Ho scaricato Visual C ++ 2005 Express Edition e Microsoft Platform SDK per Windows Server 2003 SP1, perché voglio mettere le mani sull'open source Progetto Enso .

Quindi, dopo aver installato scons sono andato sulla console e ho provato a compilarlo usando scons, ma ho riscontrato questo errore:

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.

Dopo aver verificato questi collegamenti:

VS ans PSDK

Includi tiffi.h

Wndows .h

Sono riuscito a configurare la mia installazione in questo modo:

alt text

Ed esegui anche questo script

alt text

E sono riuscito a compilare il file qui sotto nell'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;
}

Ma ho ancora quell'eccezione nella console. Qualcuno ha esperienza di scons?

Modifica

In realtà (e ho dimenticato di dirtelo) Ho avviato il prompt dei comandi con il link " Prompt dei comandi di Visual Studio 2005 " ;.

Presumo che questo includerà i percorsi nelle variabili di ambiente. Bene, dopo averli stampati, trovo che no:

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

E non erano presenti, quindi ho creato questo file .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"

Tuttavia, gli scons vedono di non prendere i vars ... :(

È stato utile?

Soluzione

L'uso dei consigli sopra indicati non funziona con gli scons: scons non importa l'ambiente dell'utente (PERCORSO e altre variabili). Il problema fondamentale è che gli scons non gestiscono le versioni recenti di SDK / VS.

Sono un collaboratore occasionale di scons e sto lavorando su questa funzionalità ATM. Spero che sarà presto incluso negli scons, ma la funzionalità è molto più difficile da implementare in modo affidabile di quanto mi aspettassi, in parte perché ogni combinazione di sdk / compilatore è diversa (e a volte anche MS non riesce a farlo bene, alcuni dei loro file .bat sono rotti), quindi non posso darti un appuntamento. Spero che sia incluso in 1.2 (che sarà rilasciato tra circa un mese).

Altri suggerimenti

Devi impostare il percorso del file include (e possibilmente altre cose). Alla riga di comando, ciò avviene in genere utilizzando un file batch che Visual Studio installa chiamato vsvars32.bat (o vcvars32.bat per la compatibilità con VC6).

Non ho familiarità con gli scons, quindi non conosco il modo migliore per configurare queste impostazioni per quello strumento, ma per i makefile standard di solito c'è una linea nel makefile che imposta una variabile macro con il percorso della directory include e quella macro viene utilizzata come parte di un parametro della riga di comando nel comando che richiama il compilatore.

Un'altra possibilità potrebbe essere che il processo scons invochi vsvars32.bat o esegua lo script scons da una riga di comando che è stata configurata con il file batch.

In breve, devi ottenere le cose che vsvars32.bat configura in qualche modo nella configurazione degli scons.

Ci sarà un file batch simile a questo (per MSVC 2005) che imposta le variabili di ambiente:

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

Passaggio 1 : trova un file simile nelle cartelle di installazione Express

Passaggio 2 : crea un collegamento sul desktop con questi dettagli di destinazione e un percorso opportunamente modificato :

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

Passaggio 3: apri il prompt DOS tramite questo collegamento

La compilazione della riga di comando ora dovrebbe funzionare all'interno di questa finestra della console.

Ci mostri come hai configurato Visual Studio per le compilation in Visual Studio ma non ci hai mostrato quale ambiente della riga di comando hai provato. Spiacenti, non ho provato le versioni Express, quindi non so se creano ulteriori scorciatoie del menu Start come Pro e sopra. Se si apre un prompt dei comandi adatto con le sue variabili di ambiente già impostate, è possibile compilare sulla riga di comando. Altrimenti devi impostare tu stesso le variabili o eseguire uno script batch per impostarle, ogni volta che apri un prompt dei comandi.

Sarà bello quando gli scons lo fanno automaticamente. Per ora, lo uso (eseguito da un prompt dei comandi dell'SDK, non sono sicuro che ci sia differenza se eseguito dopo 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(';'))

Questo funziona per me durante la compilazione di wxwidgets con Visual C ++ 2005 Express usando il prompt della riga di comando:

REM Fix Error error C1083 'windows.h'

(Utilizzare l'opzione / useenv durante la compilazione.)

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

(Passa a quello giusto.)

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

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

Quindi uso questa riga durante la compilazione. Credo che aggiungi / useenv alle tue linee e tutto dovrebbe funzionare bene:

vcbuild /useenv /nohtmllog /nologo name.proj (or any file to compile)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top