2009-10-26 9 views
1

J'ai un fichier SConstruct pour scons:Scons sous Windows: kernel32.lib

env = Environment() 
env.Append(CPPPATH = ['./']) 
env.Append(LIBS = 'kernel32.lib') 
env.Append(LIBPATH = 'C:/Program Files/Microsoft SDKs/Windows/v6.0A/Lib') 

env.SharedLibrary(target='warpLib', source='warplib.cpp') 

Si je n'inlcude pas 'kernel32.lib' et spécifions LIBPATH je reçois une erreur de lien. Ma solution fonctionne, mais ne semble pas très portable ... Qu'est-ce qu'une solution meilleure, plus portable?

Répondre

3

déclaration d'utilisation DefaultEnvironment (ENV = os.environ).

+0

Copiez tout votre environnement existant, ce qui n'est pas recommandé et n'est pas portable. –

0

Plutôt que d'appeler scons à partir d'une ligne de commande standard, utilisez l'invite de commande Visual Studio, qui sera mis en place toutes les variables d'environnement correctement

0

Je préfère utiliser la syntaxe suivante car elle me rappelle que j'utilise finalement Python, et préfère utiliser les commandes de liste Python natives que leurs équivalents pseduo SCons. De plus, cela m'aide à me rappeler que CPPATH, LIBS, LIBPATH, etc. sont toutes des listes.

env = Environment() 
env["CPPPATH"].extend(["."]) 
env["LIBS"].extend(["kernel32","someotherlib"]) #No need to specify the ".lib". This gives you platform-independance automatically. 
env["LIBPATH"].extend(["C:/Program Files/Microsoft SDKs/Windows/v6.0A/Lib"])