开发者

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

开发者 https://www.devze.com 2022-12-15 09:50 出处:网络
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

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.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号