Как запретить Scons добавлять lib перед общей библиотекой

Я играл с Scons на OSX и пытаюсь создать общую библиотеку (.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)

а также

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

Я не очень хорошо осведомлен о том, как работают разделяемые библиотеки, поэтому я не знаю, смогу ли я просто изменить имя после его компиляции. Но я бы хотел, чтобы в письмах не добавлялось

1

Решение

В каждой среде SCons использует переменные для указания префиксов и суффиксов таких вещей, как библиотеки и программы. Эти переменные инициализируются на основе обнаруженной платформы, на которой они в данный момент работают … но вы можете просто перезаписать этот параметр после вызова конструктора Environment ():

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

Для систем, похожих на «дарвин», SCons сначала вызывает стандартную инициализацию «posix» … вот откуда взялся префикс «lib» по умолчанию.

Совет: Вы можете обращаться со Средой очень похоже на словарь (хэш-карту) и устанавливать его значения так, как вам нужно. Для отображения текущего содержимого вы можете использовать метод Dump ():

print env.Dump()

в SConstruct / SConscript, который дает вам полный список определенных переменных.
Вы можете найти список стандартных переменных на странице MAN ( http://scons.org/doc/production/HTML/scons-man.html ) и руководство пользователя ( http://scons.org/doc/production/HTML/scons-user.html ).

6

Другие решения


По вопросам рекламы [email protected]