5

XCode 4.6.3 中的谷歌测试问题

大家好,

我已将谷歌测试集成到我的 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

4 回答 4

6

我有同样的问题。

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

于 2014-01-13T14:47:01.477 回答
2

这是因为您的单元测试项目的构建选项与 gtest 项目不同。确保“Apple LLVM - 语言”和“Apple LLVM - 语言 - C++”等构建选项都相同。

于 2013-10-08T06:17:07.620 回答
1

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

请记住,库必须重命名为以“lib”开头,例如 libgtest.a。

另请记住,您必须同时链接到 libgtest.a 和 libgtest_main.a。如果没有后者,您将收到有关缺少主要方法的投诉。

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

于 2014-07-01T19:53:03.647 回答
0

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

于 2016-02-08T23:25:33.863 回答