- 论坛徽章:
- 1
|
本帖最后由 ecloud 于 2011-11-28 10:48 编辑
已经手工解决,需要改一小段代码(等会有空我会写个小文档)
已经成功在Dev C++ 4.9.9.2上编译出来了两个库,gtest.a和gtest_main.a
以下是官方Sample1的运行结果,和编译器环境- [----------] Global test environment tear-down
- [==========] 6 tests from 2 test cases ran. (18 ms total)
- [ PASSED ] 6 tests.
- C:\Users\zachary>gcc -v
- Reading specs from C:/Dev-Cpp/bin/../lib/gcc/mingw32/3.4.2/specs
- Configured with: ../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as --host=
- mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls --enable
- -languages=c,c++,f77,ada,objc,java --disable-win32-registry --disable-shared --e
- nable-sjlj-exceptions --enable-libgcj --disable-java-awt --without-x --enable-ja
- va-gc=boehm --disable-libgcj-debug --enable-interpreter --enable-hash-synchroniz
- ation --enable-libstdcxx-debug
- Thread model: win32
- 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的做法,难道是向前兼容?需要兼容那么久? |
|