2010-09-15 4 views
3

J'ai essayé dur mais n'ai pas pu trouver un exemple d'utilisation de SCons (ou de tout autre système de build) pour construire sur gcc et mvC++ avec des bibliothèques boost.Renforcement Boostplateforme avec SCons

Actuellement, mon SConstruct ressemble

env = Environment() 
env.Object(Glob('*.cpp')) 
env.Program(target='test', source=Glob('*.o'), LIBS=['boost_filesystem-mt', 'boost_system-mt', 'boost_program_options-mt']) 

qui fonctionne sur Linux, mais ne pas avec Visual C++ qui à partir de 2010 ne vous permet pas de spécifier les répertoires comprennent global.

+0

Pourquoi ne pas simplement utiliser le boost du système de construction est livré avec (bjam)? –

+0

@BillyONeal La question est de construire un programme avec une dépendance sur Boost, pas de construire Boost lui-même. Le titre de la question est trompeur. – JBentley

Répondre

3

Vous aurez besoin de quelque chose comme:

import os 

env = Environment() 
boost_prefix = "" 
if is_windows: 
    boost_prefix = "path_to_boost" 
else: 
    boost_prefix = "/usr" # or wherever you installed boost 
sources = env.Glob("*.cpp") 
env.Append(CPPPATH = [os.path.join(boost_prefix, "include")]) 
env.Append(LIBPATH = [os.path.join(boost_prefix, "lib")]) 
app = env.Program(target = "test", source = sources, LIBS = [...]) 
env.Default(app) 
+0

Je vois, je pensais que SCons avait une solution plus élégante à ce problème, mais je suppose que cela ne peut que faire beaucoup. Ce qui est ennuyeux, c'est que MSVC++ liera automatiquement les dépendances, mais Windows n'a pas de pkg-config. Je ne suis pas sûr de savoir quel est le pire gcc toolchain nécessitant des directives de liaison explicites ou vC++ ayant besoin de chemins de bibliothèque explicites. – Novikov