免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6239 | 回复: 4
打印 上一主题 下一主题

最近在玩gtest,这编译安装也太不友好了 [复制链接]

论坛徽章:
1
水瓶座
日期:2014-03-20 18:21:14
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-27 16:04 |只看该作者 |倒序浏览
win平台只给VS和CB的工程文件,我用Dev C++/MinGW楞是没辙,试了好多方法都不成,下了个Code::Block也不成,导入sln后编译不成功,一大堆链接错误,大概是此工程压根儿就没考虑MinGW的库?强调的MS库?
后来用cygwin编译出来的gtest.a和gtest_main.a,只能在cygwin环境中用,一链接到MinGW编译出来的.o,就报一大堆链接错误
官方文档里说用cmake可以支持各种编译器环境,结果我下了个cmake,然后根本不好用
给个手工编译的文档能死乎?
神马J8东西做的一点都不人性化

论坛徽章:
0
2 [报告]
发表于 2011-11-28 09:28 |只看该作者
在这草有什么用

要不别用,要不自己动手解决

论坛徽章:
1
水瓶座
日期:2014-03-20 18:21:14
3 [报告]
发表于 2011-11-28 10:21 |只看该作者
本帖最后由 ecloud 于 2011-11-28 10:48 编辑

已经手工解决,需要改一小段代码(等会有空我会写个小文档)
已经成功在Dev C++ 4.9.9.2上编译出来了两个库,gtest.a和gtest_main.a

以下是官方Sample1的运行结果,和编译器环境
  1. [----------] Global test environment tear-down
  2. [==========] 6 tests from 2 test cases ran. (18 ms total)
  3. [  PASSED  ] 6 tests.

  4. C:\Users\zachary>gcc -v
  5. Reading specs from C:/Dev-Cpp/bin/../lib/gcc/mingw32/3.4.2/specs
  6. Configured with: ../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as --host=
  7. mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls --enable
  8. -languages=c,c++,f77,ada,objc,java --disable-win32-registry --disable-shared --e
  9. nable-sjlj-exceptions --enable-libgcj --disable-java-awt --without-x --enable-ja
  10. va-gc=boehm --disable-libgcj-debug --enable-interpreter --enable-hash-synchroniz
  11. ation --enable-libstdcxx-debug
  12. Thread model: win32
  13. gcc version 3.4.2 (mingw-special)
复制代码
可以肯定的是:
1、sln工程里面使用了微软私有库,具体是啥我不清楚,也懒的去找
后来我用VS2008编译成的lib库,不能在mingw环境中链接
2、cygwin编译出来的结果,也使用了某些cygwin特有函数,估计是我改掉的那个gettimeofday()
其结果跟1、一样,不能在纯win版的mingw下链接
3、Dev-Cpp自带的这个mingw环境应该是没有gettimeofday(),据说更高版本的有,我没试过。怎么说逼迫人家换编译器不是一件友好的行为

结论:
1、所谓C/C++的可移植性进步,基本上是扯淡,仅限于可以完美支持autoconfig和automake的环境,这个“环境”不光指操作系统,更指编译器环境,尤其是库;另外也要看写程序的人给不给面子
2、作为一个大公司的产品,gtest简直做的太儿戏了,乱用非标准函数不说,本来就那么几个源文件的简单东西,非要紧耦合到某些个特定版本的IDE。不就是有main和没有main的两个库吗,你弄个文档说清楚能死啊?让我们手工编译能怀孕吗?你要想只提供成品,那么好,干脆给我各种编译器版本的现成库好了,很多软件都是这么干的,安装包里几十个库文件,安装程序自动侦测环境拷贝所需要的,反正gtest这破玩意儿也就那么一两M大。
见过山寨的,没见过这么山寨的
3、我完全不会C++,只是略懂下C,一样改了gtest的源代码。一些事情关键是你要敢干,要有勇气有信心下狠手。我就是开始心软,浪费了2天时间。要是早就下狠手改它的源代码,早完事了,连VS也不用装了(我最烦这东西)

-----------
PS:Mac下编译还较顺利,就是官方提供的工程是10.4+Xcode2.x环境的配置,需要手工选成10.5(10.6报错,靠,google又写死了强行掉ppc相关库,真2!)配置才可以编译。真是难以理解google的做法,难道是向前兼容?需要兼容那么久?

论坛徽章:
1
水瓶座
日期:2014-03-20 18:21:14
4 [报告]
发表于 2011-11-28 12:16 |只看该作者
具体手工编译方法:
http://blog.chinaunix.net/space. ... blog&id=3029195
其他的编译器可以如法炮制

论坛徽章:
0
5 [报告]
发表于 2011-11-28 12:45 |只看该作者
用cygwin编译,要加--no-cygwin选项,这样MinGW才能链接
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP