2011-12-22 2 views
1

J'essaie de construire boost.lib avec bjam, mais peu importe ce que je fais, je n'arrive pas à reconnaître mon drapeau BOOST_LOG_NO_COMPILER_TLS. Je construis comme ceci:Pourquoi bjam semble-t-il ignorer mes arguments?

bjam address-model=32 --toolset=msvc-10.0 --build-type=complete 
    --with-log variant=debug link=static runtime-link=static 
    define=BOOST_LOG_NO_COMPILER_TLS stage 

Pour vérifier qu'il est en ignorant le drapeau, je compilé avec et sans ce drapeau et utilisé Beyond Compare pour comparer chaque fichier généré dans le dossier de la scène.

Tous les fichiers lib étaient identiques. Je m'attendrais à des différences si bjam reconnaissait mes champs define.

Je suis nouveau pour booster et bjam, alors je fais quelque chose de mal?

+1

Votre syntaxe est correcte, à l'exception des outils - elle devrait être 'toolset = msvc-10.0' sans' --'. Vous pouvez essayer 'cxxflags =" - DBOOST_LOG_NO_COMPILER_TLS "' au lieu d'utiliser 'define', mais vous utilisez correctement' define', donc je doute que cela puisse vous aider. Avez-vous vérifié les sources de '#undef BOOST_LOG_NO_COMPILER_TLS'? – ildjarn

+1

Etes-vous sûr que la version de Boost.Log que vous utilisez utilise la macro 'BOOST_LOG_NO_COMPILER_TLS'? Peut-être que c'est juste pour les versions plus anciennes; vous devriez grep les sources pour s'assurer qu'il est toujours applicable. Par exemple, votre thread précédent a indiqué que Boost.Log ne fonctionne qu'avec Boost.FileSystem v2, mais ce n'est certainement plus le cas, donc plus que cela peut avoir changé. – ildjarn

Répondre

1

Il s'avère qu'il ne s'agissait pas réellement de recompiler des choses, même si j'ai spécifié --build-type=complete.

Si vous avez des éléments dans votre dossier bin.v2, ils ne l'écraseront pas. Supprimez le dossier bin.v2 ou spécifiez un autre paramètre magique inconnu de bjam.

+1

En fait, si vous tapez 'bjam --help' (ou' b2 --help' dans la version actuelle), il expliquera ce que '' --build-type = complete '' veut dire - cela signifie que vous obtiendrez tous les builds possibles variantes. Si vous voulez tout reconstruire, y compris les fichiers à jour, utilisez l'option '-a' (également expliquée dans la sortie' --help') –

+0

Merci pour le pointeur Vladimir. J'étais encore confus quant à savoir pourquoi il ne reconstruit pas si un 'define' est spécifié, mais en y réfléchissant, il ne peut pas savoir que le 'define' (préprocesseur) spécifié est différent de celui que les sorties étaient en dernier construit contre. –

+1

C'est correct. Il est techniquement possible de remarquer que la définition a changé, en particulier SCons le fait en gardant une somme de contrôle de toute la ligne de commande de construction. Cependant, il n'est pas tout à fait clair si la reconstruction du projet entier si ajouter une définition est une bonne chose. –

Questions connexes