Zitat von Sanatan Rai <sana...@gmail.com>:
The `global initialisation' stuff is just the following pattern:

namespace {
  helper1 *helper1Creator()
  {
    return (new helper1());
  }
  const bool helper1Registered = factory::instance().registerhelper
    ("helper1", helper1Creator);
}

So when I put the helpers in a separate library, these lines are not
called.

Then you don't understand the implications of static libraries, yet.
Use the following from "man ld":
 --whole-archive
           For  each  archive  mentioned  on  the  command  line   after   the
           --whole-archive option, include every object file in the archive in
           the link, rather than searching the archive for the required object
           files.  This is normally used to turn an archive file into a shared
           library, forcing every object  to  be  included  in  the  resulting
           shared library.  This option may be used more than once.

           Two  notes when using this option from gcc: First, gcc doesn't know
           about this option, so you have to use -Wl,-whole-archive.   Second,
           don't  forget  to  use  -Wl,-no-whole-archive  after  your  list of
           archives, because gcc will add its own list  of  archives  to  your
           link and you may not want this flag to affect those as well.

HS


_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to