2010-03-04 50 views
0

我正在使用LLVM C++項目的工作,我想用scons替換LLVM構建系統(它使用autoconf和make)。不幸的是,我現在遇到了一個主要問題。我希望我的項目能夠在Linux和Windows上編譯。爲了在Windows上編譯,我使用了mingw/msys,它可以很好地與autoconf/make系統配合使用。sms LIBPATH在與msys的窗口

但是,scons修改我的庫路徑並以驅動器號爲前綴,即當我指定/usr/local/lib傳遞給鏈接器的實際參數是-LD:\usr\local\lib,它顯然不包含我所需的庫。我正在以下列方式設置磁帶庫路徑:

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

還有env['LIBPATH']仍包含正確的路徑。

有什麼辦法可以防止scons搞亂那條路?

感謝

回答

0

我想通了:

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

軍隊scons的初始化爲POSIX平臺,不亂用路徑的環境。不幸的是,它然後無法找到gcc。但是,這可以通過明確宣傳外部環境很容易解決。

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

也許我說得太快了。雖然它似乎工作scons現在正在打印os.environ字典到處都是不可接受的地方。只傳播PATH不起作用,即找不到gcc。此外,雖然CheckLib確實成功,但config.log仍然顯示鏈接器是用盤符前綴... wtf調用的。這使我瘋狂......也許我應該留下autoconf,並*嘆* – jokkmokk 2010-03-04 15:43:46