문제

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.

도움이 되었습니까?

해결책

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.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top