2

如何为仅 DLL 构建指定一些唯一标志。默认情况下,libtool 添加-DDLL_EXPORT这对于大多数遵循 GNU 约定的项目来说都很好,但是如果我使用 Boost,例如,我可能需要为我的库标志指定:-DDLL_EXPORT -DBOOST_ALL_DYN_LINK对于 DLL 仅构建,有时我也需要条件构建,所以我需要一些DLL/SO 构建的特定定义。

不幸的是,我找不到如何使用 libtool 执行此操作的方法,我应该使用哪些标志?

PS:甚至不要试图建议转移到 CMake。

例子:

我使用链接到 bar 的库 foo 并要求 -DBAR_EXPORTS 仅获取动态库的符号。

有没有类似的东西

 libfoo_la_dynamic_CXXFLAGS = -DBAR_EXPORTS

有人吗?

替代解决方案:(非常丑陋)

创建一个文件`defines.h

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

进而:

 libfoo_la_CXXFLAGS += -include defines.h

丑陋但应该工作。

4

2 回答 2

0

不是那么漂亮,但是您可以使用条件来检查是否定义了 DLL_EXPORT 以及是否定义了您需要的其他内容?

我对自动工具不是很好,我更喜欢 CMake,但你似乎很反对。

于 2010-01-21T17:31:59.987 回答
0

您可以默认禁用构建共享库

LT_INIT([disable-shared])

如果明确请求共享库,那么您可以AM_CONDITIONAL结合使用并设置额外的定义。--enabled-sharedIOW,启用静态或共享构建,但不能同时构建。

于 2010-01-24T03:02:38.930 回答