Search code examples
c++dllbuild-automationautomakelibtool

Is it possible to specify specific flags/define for DLL/SO build?


How can I specify some unique flags for DLL only builds. By default libtool adds -DDLL_EXPORT which is fine for most projects that follow GNU conventions, but if I work, for example, with Boost I may need to specify for my library flags: -DDLL_EXPORT -DBOOST_ALL_DYN_LINK for DLL only builds, also sometimes I want conditional builds so I need some specific defines for DLL/SO build.

Unfortunately I can't find a way how to do this with libtool, what flags should I use?

P.S.: Don't even try to suggest to move to CMake.

Example:

I use library foo that links to bar and requires -DBAR_EXPORTS to get symbols for dynamic library only.

Is there something like

 libfoo_la_dynamic_CXXFLAGS = -DBAR_EXPORTS

Anybody?

Alternative Solution: (quite ugly)

Create a file `defines.h

#if defined(PIC) || defined(DLL_EXPORT)
#define BAR_EXPORTS
#endif

And then:

 libfoo_la_CXXFLAGS += -include defines.h

Ugly but should work.


Solution

  • You can disable building shared library by default with

    LT_INIT([disable-shared])
    

    then you can use AM_CONDITIONAL combined with --enabled-shared and set the extra definitions if shared library is explicitly requested. IOW, enable building static or shared, but not both at the same time.