[Scons-users] Shared library in bin subdirectory
William Deegan
bill at baddogconsulting.com
Thu Dec 27 13:18:58 EST 2012
LRN,
On Dec 27, 2012, at 12:28 AM, LRN wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 26.12.2012 22:47, Bill Deegan wrote:
>> On Wed, Dec 26, 2012 at 8:05 AM, LRN wrote:
>>
>>> Here's what i do:
>>>
>>> prefix = ARGUMENTS.get ('prefix', None) destdir = ARGUMENTS.get
>>> ('destdir', None) if prefix == None: prefix = '/usr/local'
>>>
>>> foo = env.SharedLibrary (target = "foo", source = ["foo.c"],
>>> SHLIBPREFIX = 'lib', LIBSUFFIX='.dll.a') if destdir is not None:
>>> destprefix = destdir + prefix env.Install (os.path.join
>>> (destprefix, 'bin'), [foo]) env.Alias('install', destprefix)
>>>
>>> And when i do `scons prefix=/ destdir=c:/bar install', i end up
>>> having libfoo.dll.a import library in c:/bar/bin/ directory
>>> instead of c:/bar/lib. How do i make SharedLibrary or Install put
>>> the import library into /lib subdirectory?
>>>
>>
>> Here's your problem: env.Install (os.path.join (destprefix, 'bin'),
>> [foo])
>>
>> Change 'bin' to 'lib'...
> Thank you for your quick response.
>
> I've tried that, and it works - libfoo.dll.a is installed into /lib
> subdir!
>
> However, a completely unrelated problem has cropped up:
> Now when i do `scons prefix=/ destdir=c:/bar install', i end up having
> libfoo.dll shared library in c:/bar/lib/ directory instead of
> c:/bar/bin. How do i make SharedLibrary or Install put the shared
> library into /bin subdirectory?
>
Any builder only specifies 1 target dir. If you want to have the output(s) go to more than one, then you'll have to use env.Install() to do so.
-Bill
More information about the Scons-users
mailing list