gpt4 book ai didi

c++ - 是否可以为 DLL/SO 构建指定特定标志/定义?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:02:29 25 4
gpt4 key购买 nike

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

不幸的是,我找不到使用 libtool 执行此操作的方法,我应该使用什么标志?

附注:甚至不要尝试建议迁移到 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

丑陋但应该工作。

最佳答案

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

LT_INIT([disable-shared])

然后您可以使用 AM_CONDITIONAL 结合 --enabled-shared 并在明确请求共享库时设置额外的定义。 IOW,启用静态构建或共享构建,但不能同时构建。

关于c++ - 是否可以为 DLL/SO 构建指定特定标志/定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1988685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com