我一直在和OSX上的Scons一起玩,而我正试图创建一个共享库(.dll,.so,.dylib)。
除了一件真让我烦恼的事情之外,它完美地完成了工作,它增加了“自由”。在图书馆名称前面。例如,我选择名称 WL ,它变为 libWL.dylib 。我无法解释为什么Scons这样做,这让我很生气。
我使用的代码是:
# -*- 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)
我不太了解共享库的工作方式,所以我不知道在编译之后是否可以更改名称。但我希望它不添加字母
答案 0 :(得分:6)
在每个环境中,SCons使用变量来指定库和程序之类的前缀和后缀。这些变量基于其当前正在运行的检测到的平台进行初始化...但您可以在调用Environment()构造函数后简单地覆盖此设置:
env = Environment()
env['SHLIBPREFIX'] = ''
对于" darwin"类系统,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)中找到标准变量列表。