2010-03-04 6 views
0

Je travaille sur un projet C++ en utilisant LLVM et je voudrais remplacer le système de construction LLVM (qui utilise autoconf et make) avec scons. Malheureusement, j'ai maintenant rencontré un problème majeur. Je veux que mon projet compile sous Linux et Windows. Pour compiler sur Windows j'utilise mingw/msys qui fonctionne parfaitement avec le système autoconf/make en place. Scons modifie mon chemin de bibliothèque et le préfixe avec la lettre de lecteur, c'est-à-dire que lorsque je spécifie /usr/local/lib, le paramètre réel passé à l'éditeur de liens est -LD:\usr\local\lib qui ne contient évidemment pas mes bibliothèques requises. J'installe le chemin de la bibliothèque de la manière suivante:scons LIBPATH sur windows avec msys

env = Environment(LIBPATH = ['/usr/local/lib', 'build/lib/sample'])

également env['LIBPATH'] contient toujours le bon chemin.

Existe-t-il un moyen d'empêcher les objets de décomposer ce chemin?

grâce

Répondre

0

I figured it out:

pour initialiser l'environnement
env = Environment(LIBPATH = ['/usr/local/lib'], platform = 'posix') 

SCons forces pour la plate-forme qui ne posix plaisante pas avec les chemins. Malheureusement, il ne parvient pas à trouver gcc. Mais cela peut être facilement résolu en propageant explicitement l'environnement externe

env = Environment(LIBPATH = ['/usr/local/lib'], platform = 'posix', ENV = os.environ) 
+0

peut-être que j'ai parlé trop tôt. Alors qu'il semble fonctionner, Scons imprime maintenant le dictionnaire os.environ partout, ce qui est inacceptable. Seule la propagation du PATH ne fonctionne pas, c'est-à-dire que gcc n'est pas trouvé. En outre bien que CheckLib réussisse config.log montre toujours que l'éditeur de liens est appelé avec le préfixe de lettre de lecteur ... wtf? Cela me rend fou ... peut-être que je devrais rester avec autoconf et faire * soupir * – jokkmokk