Xcode 6 - 编译和使用 gtest 1.7
Xcode 6 - compile and use gtest 1.7
大约一周前,我从 Windows 和 Visual Studio 搬到了 Mac 和 Xcode。我希望能够在 Mac 上处理我的项目,所以我决定移植它。
首先,我需要测试才能在 Mac 上工作,Google 提供了 instructions 如何进行测试。使用 Xcode 构建测试后,我可以在输出目录中看到三个文件:test.framework、libgtest_main.a 和 libgtest.a。
文档说我需要 link test.framework 我的项目。因此,我创建了新的控制台应用程序项目,并使用 test.framework 文件 link 它。
不幸的是,我的构建失败了大约 70 多个问题。在我 link librettist.a 我的项目之后,它失败了,只有两个问题。他们在这里:
Undefined symbols for architecture x86_64:
"testing::internal::EqFailure(char const*, char const*,
std::__1::basic_string,
std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&,
bool)", referenced from:
testing::AssertionResult testing::internal::CmpHelperEQ(char const*, char const*, int const&, int const&) in main.o ld:
symbol(s) not found for architecture x86_64 clang: error: linker
command failed with exit code 1 (use -v to see invocation)
据我了解,linker 无法解析符号。如果我 link 我的项目与 libgtest_main.a 它没有任何改变,这个错误仍然存在。那么,我该如何解决呢?
我遇到了同样的问题,无法弄清楚为什么没有创建它。它在某些 32 位代码上工作正常,所以我同样感到困惑。
也就是说,gtest 包中的样本有以下注释:
EXPECT_EQ(expected, actual) is the same as EXPECT_TRUE((expected) ==
(actual)) except that it will print both the expected value and the
actual value when the assertion fails. This is very helpful for
debugging. Therefore in this case EXPECT_EQ is preferred.
ASSERT_EQ和ASSERT_TRUE也是如此。所以如果你进行替换,你会在失败的情况下丢失一些信息,但至少你可以使用它。
大约一周前,我从 Windows 和 Visual Studio 搬到了 Mac 和 Xcode。我希望能够在 Mac 上处理我的项目,所以我决定移植它。
首先,我需要测试才能在 Mac 上工作,Google 提供了 instructions 如何进行测试。使用 Xcode 构建测试后,我可以在输出目录中看到三个文件:test.framework、libgtest_main.a 和 libgtest.a。
文档说我需要 link test.framework 我的项目。因此,我创建了新的控制台应用程序项目,并使用 test.framework 文件 link 它。 不幸的是,我的构建失败了大约 70 多个问题。在我 link librettist.a 我的项目之后,它失败了,只有两个问题。他们在这里:
Undefined symbols for architecture x86_64:
"testing::internal::EqFailure(char const*, char const*, std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&, bool)", referenced from: testing::AssertionResult testing::internal::CmpHelperEQ(char const*, char const*, int const&, int const&) in main.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
据我了解,linker 无法解析符号。如果我 link 我的项目与 libgtest_main.a 它没有任何改变,这个错误仍然存在。那么,我该如何解决呢?
我遇到了同样的问题,无法弄清楚为什么没有创建它。它在某些 32 位代码上工作正常,所以我同样感到困惑。
也就是说,gtest 包中的样本有以下注释:
EXPECT_EQ(expected, actual) is the same as EXPECT_TRUE((expected) == (actual)) except that it will print both the expected value and the actual value when the assertion fails. This is very helpful for debugging. Therefore in this case EXPECT_EQ is preferred.
ASSERT_EQ和ASSERT_TRUE也是如此。所以如果你进行替换,你会在失败的情况下丢失一些信息,但至少你可以使用它。