Google Test和XCode 4.6

时间:2013-08-13 12:50:31

标签: xcode testing

XCode 4.6.3中的Google测试问题

大家好,

我已将google测试集成到我的XCode项目中,以及基本的命令行工具 单元测试似乎工作正常(添加了guest.framework,正确设置了DYLD_LIBRRY_PATH)。

但是,只要我添加到对象夹具EXPECT_EQ(0,Object.PublicMember)类型 测试,我得到以下链接器错误。

Ld /Users/rinkevic/Library/Developer/Xcode/DerivedData/VeloxChemX-hbmvfkmcscchsvebxpaefvzmkvdp/Build/Products/Debug/UnitTest normal x86_64
cd /Users/rinkevic/Development/VeloxChemX
setenv MACOSX_DEPLOYMENT_TARGET 10.8
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk -L/Users/rinkevic/Library/Developer/Xcode/DerivedData/VeloxChemX-hbmvfkmcscchsvebxpaefvzmkvdp/Build/Products/Debug -F/Users/rinkevic/Library/Developer/Xcode/DerivedData/VeloxChemX-hbmvfkmcscchsvebxpaefvzmkvdp/Build/Products/Debug -F/Users/rinkevic/Development/Frameworks -F/Users/rinkevic/Development/VeloxChemX/../../Library/Frameworks -F/Users/rinkevic/Development/VeloxChemX/../Frameworks -filelist /Users/rinkevic/Library/Developer/Xcode/DerivedData/VeloxChemX-hbmvfkmcscchsvebxpaefvzmkvdp/Build/Intermediates/VeloxChemX.build/Debug/UnitTest.build/Objects-normal/x86_64/UnitTest.LinkFileList -mmacosx-version-min=10.8 -stdlib=libc++ -framework gtest -framework OpenCL -o /Users/rinkevic/Library/Developer/Xcode/DerivedData/VeloxChemX-hbmvfkmcscchsvebxpaefvzmkvdp/Build/Products/Debug/UnitTest


Undefined symbols for architecture x86_64:
"testing::internal::EqFailure(char const*, char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool)", referenced from:testing::AssertionResult testing::internal::CmpHelperEQ<int, int>(char const*, char const*, int const&, int const&) in TestCartMom.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

有什么建议我做错了吗?

4 个答案:

答案 0 :(得分:6)

我遇到了同样的问题。

在两个项目中选择libstdc ++。

答案 1 :(得分:2)

这是因为您的单元测试项目的构建选项与gtest项目不同。 确保构建选项,例如“Apple LLVM - Language”&amp; “Apple LLVM - 语言 - C ++”都是一样的。

答案 2 :(得分:1)

此处概述了另一种解决方案:http://dennycd.me/google-test-xcode-mac-osx/通过不使用框架而是安装到/ usr / local中,为情况带来了一些理智。

请记住,必须将lib重命名为以&#39; lib&#39;开头,例如libgtest.a。

另请记住,您必须链接到libgtest.a和libgtest_main.a。没有后者,你会得到关于错过主要方法的抱怨。

关于c ++方言和库的相同评论是适用的,但我发现在制作框架并试图链接到它时很难控制这些。

答案 3 :(得分:0)

默认情况下,General.xcconfig指向10.4 SDK,将其更改为10.10已解决的问题