Question

Aujourd'hui est officiellement mon premier jour avec C ++: P

J'ai téléchargé Visual C ++ 2005 Express Edition et le Kit de développement logiciel (SDK) pour Windows Server 2003 SP1, car je souhaite mettre la main sur l'open source Projet Enso .

Ainsi, après avoir installé scons, je suis allé sur la console et j'ai essayé de le compiler à l'aide de scons, mais j'ai l'erreur suivante:

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.

Après avoir vérifié ces liens:

VS ans PSDK

Inclure tiffi.h

Fenêtres .h

J'ai réussi à configurer mon installation comme suit:

alt text

Et même exécuter ce script

alt text

Et j'ai réussi à compiler le fichier ci-dessous dans l'EDI.

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

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


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

Mais je reçois toujours cette exception dans la console. Quelqu'un at-il une expérience scons?

MODIFIER

En fait (et j'ai oublié de vous dire cela), j'ai lancé l'invite de commande avec le lien "Invite de commandes Visual Studio 2005".

Je suppose que cela inclura les chemins dans les variables d'environnement. Eh bien, après les avoir imprimées, je constate que ce n’est pas le cas:

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

Et comme ils n'étaient pas présents, j'ai créé ce fichier .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"

Toujours, scons ne veut pas prendre les vars ... :(

Était-ce utile?

La solution

L'utilisation des recommandations ci-dessus ne fonctionnera pas avec scons: scons n'importera pas l'environnement utilisateur (PATH et autres variables). Le problème fondamental est que scons ne gère pas les versions récentes de SDK / VS.

Je contribue occasionnellement à scons et je travaille sur cette fonctionnalité ATM. Espérons que cela sera bientôt inclus dans scons, mais la fonctionnalité est beaucoup plus difficile à implémenter de manière fiable que ce à quoi je m'attendais, en partie parce que chaque combinaison sdk / compilateur est différente (et parfois même MS ne le fait pas correctement, certains de leurs fichiers .bat sont cassés), donc je ne peux pas vous donner une date. J'espère qu'il sera inclus dans la version 1.2 (à paraître dans un mois environ).

Autres conseils

Vous devez définir le chemin du fichier d'inclusion (et éventuellement d'autres choses). Sur la ligne de commande, cette opération est généralement effectuée à l'aide d'un fichier de commandes installé par Visual Studio, appelé vsvars32.bat (ou vcvars32.bat pour assurer la compatibilité avec VC6).

Je ne suis pas familier avec scons, donc je ne connais pas le meilleur moyen de configurer ces paramètres pour cet outil, mais pour les makefiles standard, il existe généralement une ligne dans le fichier makefile qui définit une variable macro avec le chemin du répertoire d'inclusion et cette macro est utilisée dans un paramètre de ligne de commande dans la commande qui appelle le compilateur.

Une autre possibilité pourrait être que le processus scons appelle vsvars32.bat ou exécute le script scons à partir d'une ligne de commande configurée avec le fichier de commandes.

En bref, vous devez obtenir les éléments configurés par vsvars32.bat dans la configuration scons.

Il y aura un fichier de commandes similaire à celui-ci (pour MSVC 2005) qui configure les variables d'environnement:

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

Étape 1 : recherchez un fichier similaire dans les dossiers d'installation Express

.

Étape 2 : créez un raccourci sur le bureau avec ces détails de cible et un chemin modifié en conséquence :

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

Étape 3: ouvrez l'invite DOS via ce raccourci

.

La construction en ligne de commande devrait maintenant fonctionner à partir de cette fenêtre de la console.

Vous nous indiquez comment vous avez configuré Visual Studio pour les compilations dans Visual Studio, mais vous ne nous avez pas indiqué l'environnement de ligne de commande que vous avez essayé. Désolé, je n'ai pas essayé les versions Express, donc je ne sais pas si elles créent des raccourcis supplémentaires dans le menu Démarrer, comme Pro et les précédents. Si vous ouvrez une invite de commande appropriée avec ses variables d'environnement déjà définies, vous pouvez compiler sur la ligne de commande. Sinon, vous devez définir vous-même les variables ou exécuter un script batch pour les définir, chaque fois que vous ouvrez une invite de commande.

Ce sera bien quand scons le fera automatiquement. Pour l'instant, j'utilise ceci (exécuté à partir d'une invite de commande du SDK, ne sachant pas s'il y a une différence s'il est exécuté aprè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(';'))

Cela fonctionne pour moi lors de la compilation de wxwidgets avec Visual C ++ 2005 Express à l'aide de l'invite de ligne de commande:

REM Fix Error error C1083 'windows.h'

(Utilisez l'option / useenv lors de la compilation.)

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

(Passez à la droite.)

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

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

Ensuite, j'utilise cette ligne lors de la compilation. Je pense simplement ajouter / useenv à vos lignes et tout devrait bien fonctionner:

vcbuild /useenv /nohtmllog /nologo name.proj (or any file to compile)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top