• 注册
欢迎加入behaviac Q&A网站。behaviac是腾讯开源组件https://github.com/TencentOpen/behaviac 官方网站:http://www.behaviac.com/,提供各种文档和教程及手册 为了您及时的获得您最新问题的评论或者回答,请提供并验证您的邮箱

linux下能否构建Behaviac动态库

0 喜欢 0 不喜欢
606 浏览
细看了下CMakeLists.txt,发现BUILD_SHARED_LIBS选项在非windows和安卓平台下会被强制设为OFF,这是出于什么原因呢?
最新提问 4月 7, 2016 用户: imlison (170 分)

1个回答

0 喜欢 0 不喜欢

CMakeLists.txt,BUILD_SHARED_LIBS选项在非windows和安卓平台下被设为OFF,只是缺省值啦。

  1. windows下,BUILD_SHARED_LIBS缺省用on
  2. 非windows和安卓平台,BUILD_SHARED_LIBS缺省用off
  3. 可以通过gui的下拉列表选择,或根据自己的项目选择修改,或者通过cmake的命令行指定
最新回答 4月 7, 2016 用户: jonygli (57,510 分)
修改于 4月 7, 2016 用户:jonygli

好吧,那这个CMakeLists.txt对非GUI用户就不太好用啦,有些选项需要放在开头才能行,又有些选项要放在后面才行blush

刚实践了下,linux下强制把BUILD_SHARED_LIBS设为ON是不行滴,编译不过
在build/cmake_binary/linux/debug下执行

cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=ON --build ../../../..

依然是静态库
恩,我正在调整,txt里应该写成cache,等下个版本吧。我更新下。
我手动改了下,可以正确生成Makefile了

另外存在一个问题是构建动态库时会报错误“error: ‘dllexport’ attribute directive ignored”,gcc不支持这个属性。
#ifdef BEHAVIAC_DLL
#	define BEHAVIAC_DLL_ENTRY_IMPORT					
#	define BEHAVIAC_DLL_ENTRY_EXPORT					__attribute__((visibility("default")))
#else
#	define BEHAVIAC_DLL_ENTRY_IMPORT
#	define BEHAVIAC_DLL_ENTRY_EXPORT
#endif//BEHAVIAC_DLL

你试试上面的先

你确定这个是放在IMPORT行而不是EXPORT行?
对,应该是export
...