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 link开发者_Python百科s 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.
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.
Not that pretty, but could you use a conditional to check if DLL_EXPORT is defined and if it is define the others you need?
I'm not that good with autotools, I prefer CMake but you seem quite against that.
精彩评论