我怎么能指定一些独特的标志DLL唯一基础之上。通过默认libtool增加了 -DDLL_EXPORT 这是很好的大多数项目的后续GNU公约,但如果我的工作,例如,与提高我可以指定需要为我的图书馆的标志: -DDLL_EXPORT -DBOOST_ALL_DYN_LINK 为DLL只有建立,也有时候我希望有条件的建立,所以我需要一些具体的定义为DLL/所以建立。

不幸的是我找不到一个方式如何做到这一点,与libtool,什么标志应使用吗?

P.S.: 甚至不试图表明移到CMake.

例如:

我用图书馆foo链接到酒吧和需要-DBAR_EXPORTS得到的符号的动态图书馆只。

是不是有什么样的

 libfoo_la_dynamic_CXXFLAGS = -DBAR_EXPORTS

任何人吗?

备选方案: (很丑)

创建一个文件`定义。h

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

然后:

 libfoo_la_CXXFLAGS += -include defines.h

丑陋的,但应工作。

有帮助吗?

解决方案

你可以禁止的建筑共用图书馆通过与默认

LT_INIT([disable-shared])

然后你可以用 AM_CONDITIONAL 结合 --enabled-shared 和设置额外的定义,如果共用图书馆是明确的要求。IOW,使建设静态的或者共享的,但不能两者都在同一时间。

其他提示

不是很漂亮,但是你能用 有条件的 到检查,如果DLL_EXPORT定义,如果是定义的其他你需要什么?

我不擅长autotools,我喜欢CMake但你看起来很反对。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top