2014-11-24 3 views
1

Я играл со Scons на OSX, и я пытаюсь создать общую библиотеку (DLL, .so, .dylib).Как остановить Скон, добавляя lib infront из общей библиотеки

Все работает отлично, за исключением одной вещи, которая меня действительно раздражает, она добавляет «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

Большое вам спасибо, вы джентльмен и ученый! –