是否有可能指定具体的标志定义为DLL/么建?
-
22-09-2019 - |
题
我怎么能指定一些独特的标志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但你看起来很反对。
不隶属于 StackOverflow