Lor*_*ndy 1 c++ macos dll dylib scons
我一直在玩OSX上的Scons,我正在尝试创建一个共享库(.dll,.so,.dylib).
这一切都完美无缺,除了一件让我烦恼的事情,它在图书馆名称前添加了"lib".例如,我选择名称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)
Run Code Online (Sandbox Code Playgroud)
和
Import('SourceList env libraries Paths Targets')
SharedLibrary(target = Targets,source = SourceList,LIBS = libraries, LIBPATH=Paths)
Run Code Online (Sandbox Code Playgroud)
我不太了解共享库的工作方式,所以我不知道在编译后是否可以更改名称.但我希望它不要添加字母
在每个环境中,SCons使用变量来指定库和程序之类的前缀和后缀.这些变量根据当前运行的检测到的平台进行初始化...但是您可以在调用Environment()构造函数后简单地覆盖此设置:
env = Environment()
env['SHLIBPREFIX'] = ''
Run Code Online (Sandbox Code Playgroud)
对于类似"darwin"的系统,SCons首先调用标准的"posix"初始化...这是默认的"lib"前缀来自的地方.
提示:您可以将环境视为字典(哈希映射),并将其值设置为您需要的值.要显示其当前内容,您可以使用Dump()方法:
print env.Dump()
Run Code Online (Sandbox Code Playgroud)
在SConstruct/SConscript中,它为您提供已定义变量的完整列表.您可以在MAN页面(http://scons.org/doc/production/HTML/scons-man.html)和UserGuide(http://scons.org/doc/production/HTML)中找到标准变量列表/scons-user.html).
| 归档时间: |
|
| 查看次数: |
911 次 |
| 最近记录: |