add_library NO_PREFIX

Alexander Neundorf neundorf at kde.org
Thu Nov 29 08:36:33 UTC 2012


On Thursday 29 November 2012, David Faure wrote:
> On Thursday 29 November 2012 09:08:05 Alexander Neundorf wrote:
> > In KDE4 we do it this way because we did it this way in KDE3. ;-)
> > Personally I don't care much whether plugins have a "lib" prefix or not.
> > Not having the "lib" prefix can be interpreted as a hint that this file
> > is not a normal shared library.
> > Technically it shouldn't matter I think.
> 
> It's more than a hint, it's a strong guarantee, that nobody will ever
> succeed in linking to a plugin as if it was a shared lib.

At least it is possible:
~/src/test/$ g++  main.cpp  /usr/lib/audacious/Output/filewriter.so -o test
~/src/test/$ ldd test
        linux-gate.so.1 =>  (0xffffe000)
        /usr/lib/audacious/Output/filewriter.so (0xb76eb000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb75da000)
        libm.so.6 => /lib/libm.so.6 (0xb75b4000)
        libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0xb7598000)
        libc.so.6 => /lib/libc.so.6 (0xb7434000)
        libaudcore.so.1 => /usr/lib/libaudcore.so.1 (0xb7423000)
        libaudgui.so.1 => /usr/lib/libaudgui.so.1 (0xb73f6000)
        libgtk-x11-2.0.so.0 => /usr/lib/libgtk-x11-2.0.so.0 (0xb7024000)
...

> 
> > I just had a look at the gimp plugin dir, those seem to be executables
> > (no prefix, no suffix, and they say "compose is a GIMP plug-in and must
> > be run by GIMP to be used" when executed.
> 
> Unusual :)
> 
> At least that makes the lookup cross-platform, without having to mess with
> extensions.

Maybe they are .exe's on Windows...
 
> > The following packages installed on my system use plugins without "lib"
> > prefix: ghostscript, audacious, slang, zsh, gegl, gconv, egl, pango.
> > 
> > The only plugins I found which clearly seemed to be plugins and not
> > shared libs which have the "lib" prefix are from CodeBlocks.
> > 
> > So at least it seems to be quite common to have no prefix for plugins.
> 
> Right.

Simply changing the default in cmake is probably not possible, since this 
would break projects which expect to have the "lib" prefix in their plguins.

But e.g. by introducing a new cmake policy (e.g. CMP0020: do not set a prefix 
for MODULE libraries) this should be possible.
So whoever says 
cmake_minimum_required(VERSION 2.8.11)
would automatically get this policy activated, and the modules wouldn't have 
the prefix anymore. This is usually acceptable behaviour for cmake since 
stating "I need cmake 2.8.11" is interpreted to imply that this users knows 
what he is doing and that he explicitely asked for the behaviour as it is in 
2.8.11.

Alex


More information about the Kde-frameworks-devel mailing list