2014-11-24 26 views
1

我一直在OSX上玩弄Scons,並試圖製作共享庫(.dll,.so,.dylib)。如何停止Scons在共享庫的前面添加lib

除了一件讓我非常討厭的事情之外,它的所有工作都很完美,它在庫名稱前添加了'lib'。例如,我選擇名稱WL並且它變成libWL.dylib。我無法弄清楚爲什麼Scons會這樣做,這讓我很生氣。

enter image description here

我使用的代碼是:

# -*- coding: utf-8 -*- 
import os 
SourceList = ['Window.cpp'] 
env = Environment(ENV = os.environ) 

#Libraries we are using 
Targets = 'WL' 
libraries = ['SDL2'] 

#Paths to the libraries and include paths 
Paths = ['/usr/local/lib', '/usr/local/include'] 

Export('SourceList env libraries Paths Targets') 
SConscript('src/SConscript', variant_dir='bin', duplicate=0) 

Import('SourceList env libraries Paths Targets') 
SharedLibrary(target = Targets,source = SourceList,LIBS = libraries, LIBPATH=Paths) 

我不是超級懂行的有關共享庫的工作原理,所以我不知道如果我編譯後可以更改名稱。但我希望它不會添加字母

回答

6

在每個環境中,SCons使用變量來指定庫和程序之類的東西的前綴和後綴。這些變量初始化獲得基於它目前在...運行檢測平臺上,但你可以簡單地環境的號召後,將覆蓋此設置()構造函數:

env = Environment() 
env['SHLIBPREFIX'] = '' 

對於「達爾文」般的系統, SCons首先調用標準的「posix」初始化...這是默認的「lib」前綴來自哪裏。

提示:您可以像處理字典(哈希映射)那樣對待環境,並設置它的值,使其成爲您需要的值。爲了顯示其當前的內容,你可以使用dump()方法:

print env.Dump() 

在SConstruct/SConscript它給你定義的變量的完整列表。 您可以在MAN頁面(http://scons.org/doc/production/HTML/scons-man.html)和UserGuide(http://scons.org/doc/production/HTML/scons-user.html)中找到標準變量的列表。

+0

非常感謝你,你是一個紳士和學者! – 2014-11-25 00:17:02