Frage

Heute ist offiziell mein erster Tag mit C ++: P

Ich habe Visual C ++ 2005 Express Edition und Microsoft Platform SDK für Windows Server 2003 SP1 heruntergeladen haben, weil ich meine Hände auf die Open-Source bekommen möchten Enso Projekt .

So, nach scons Installation ich an die Konsole ging und versuchte, sie mit scons zu kompilieren, aber ich habe diesen Fehler:

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.

Nach dem diese Links Überprüfung:

VS ans PSDK

Neue tiffi.h

Wndows .h

Ich habe es geschafft, meine Installation wie folgt zu konfigurieren:

alt text

Und auch dieses Skript ausführen

alt text

Und ich schaffte es die Datei unten in der IDE zu kompilieren.

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

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


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

Aber ich bekomme immer noch die Ausnahme in der Konsole. Hat jemand SCons Erfahrung?

Bearbeiten

Eigentlich (und ich vergessen haben, dies zu sagen) ich die Eingabeaufforderung mit dem Link „Visual Studio 2005-Eingabeaufforderung“ gestartet.

Ich nehme an, dies wird die Pfade in Umgebungsvariablen enthalten. Nun, nachdem sie den Druck finde ich, dass es tat nicht:

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

Und sie waren nicht vorhanden, so Ich habe diese .bat-Datei:

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"

Dennoch scons seeems nicht die Vars nehmen ... :(

War es hilfreich?

Lösung

Unter Verwendung der oben genannten Empfehlungen nicht mit scons arbeiten: scons nicht importiert die Benutzerumgebung (PATH und andere Variablen). Das grundlegende Problem ist, dass scons nicht neuere Versionen von SDKs / VS umgehen kann.

Ich bin gelegentlich Beiträge zu scons, und zu dieser Funktion ATM arbeitete. Hoffentlich wird es in scons enthält bald, aber die Funktion ist viel schwieriger zuverlässig zu implementieren als ich zunächst erwartet, zum Teil, weil jeder sdk / Compiler Kombination verschieden ist (und manchmal sogar MS ist es nicht richtig, ein Teil ihrer .bat-Dateien geben Sie gebrochen), so kann ich kein Datum. Ich hoffe, es wird in 1.2 enthalten sein (in approximativ 1 Monat veröffentlicht werden).

Andere Tipps

Sie müssen den Dateipfad (und möglicherweise andere Dinge) umfassen. In der Befehlszeile wird dies in der Regel mit Hilfe einer Batch-Datei durchgeführt, dass Visual Studio vsvars32.bat (oder vcvars32.bat für die Kompatibilität mit VC6) genannt anbringt.

Ich bin nicht vertraut mit scons so dass ich die beste Art und Weise nicht wissen, diese Einstellungen für das Werkzeug konfigurieren zu bekommen, aber für Standard-Makefiles gibt es in der Regel eine Zeile in der Make-Datei, die mit dem Verzeichnispfad enthält eine Makrovariablen setzt und dass Makro wird als Teil einer Befehlszeilenparameter in dem Befehl verwendet, die den Compiler aufruft.

Eine andere Möglichkeit könnte sein, die scons Prozess invoke vsvars32.bat haben oder das scons Skript über eine Befehlszeile ausführen, die mit der Batch-Datei konfiguriert wurde.

Kurz gesagt müssen Sie die Dinge bekommen, dass vsvars32.bat irgendwie die scons Konfiguration konfiguriert in.

Es wird eine Batch-Datei ähnlich wie diese (für MSVC 2005), die die Umgebungsvariablen aufstellt:

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

Schritt 1: : Finden Sie eine ähnliche Datei in dem Express-Installationsordner

Schritt 2 : Erstellen Sie eine Verknüpfung auf dem Desktop mit diesen Ziel Details und ein in geeigneter Weise modifizierte Pfad :

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

Schritt 3: Öffnen Sie die DOS-Eingabeaufforderung über diese Verknüpfung

Die Kommandozeile Build soll nun aus diesem Konsolenfenster arbeitet.

Sie zeigen uns, wie Sie Visual Studio für Compilations in Visual Studio konfiguriert, aber sie zeigte uns nicht, was Umwelt Befehlszeile Sie versucht. Leider habe ich noch nicht ausprobiert Express-Versionen, damit ich weiß nicht, ob sie zusätzliche Verknüpfungen im Startmenü wie Pro erstellen und über tun. Wenn Sie eine geeignete Eingabeaufforderung mit Umgebungsvariablen bereits eingestellt öffnen, dann können Sie auf der Kommandozeile kompilieren. Andernfalls müssen Sie Variablen selbst einstellen oder eine Batch-Skript ausführen, sie zu setzen, jedes Mal, wenn Sie eine Eingabeaufforderung öffnen.

Es wird schön sein, wenn scons dies automatisch tut. Denn jetzt, verwende ich diesen (run von einer SDK-Eingabeaufforderung nicht sicher, ob es ein Unterschied, wenn nach vsvars32.bat ausgeführt werden):

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(';'))

Das ist für mich arbeitet, während wxwidgets mit Visual C ++ 2005 Express Kompilieren der Befehlszeile ein:

REM Fix Error error C1083 'windows.h'

(Use / useenv Option beim Kompilieren.)

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

(Änderung auf der rechten Seite ein.)

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

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

ich diese Linie dann verwenden, wenn kompilieren. Ich glaube, fügen Sie einfach /useenv auf Ihre Linien und alles sollte funktionieren:

vcbuild /useenv /nohtmllog /nologo name.proj (or any file to compile)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top