【问题标题】:CMake Linker Error with CppUnit OS X 10.10CppUnit OS X 10.10 的 CMake 链接器错误
【发布时间】:2014-11-09 10:28:32
【问题描述】:

我的 CMake 环境有问题。 我的团队使用 CppUnit,但是自从升级到 OS X 10.10 (Yosemite) 以来,我们的测试构建一直失败 此构建适用于 Linux 机器和 OS X Mavericks。 我们不知道为什么它不起作用。

我们的 CMakeLists.txt 可以在这里找到:https://gist.github.com/VikomMedia/802fb41a411dd2f7358e

...
Linking CXX executable sailbot_test
Undefined symbols for architecture x86_64:
  "SailingLogicTest::testShouldBeat()", referenced from:
      SailingLogicTest::addTestsToSuite(CppUnit::TestSuiteBuilderContextBase&) in SailingLogicTest.cpp.o
  "SailingLogicTest::testIsThereChangeToAWA()", referenced from:
      SailingLogicTest::addTestsToSuite(CppUnit::TestSuiteBuilderContextBase&) in SailingLogicTest.cpp.o
  "SailingLogicTest::testCanReachDestWithoutTack()", referenced from:
      SailingLogicTest::addTestsToSuite(CppUnit::TestSuiteBuilderContextBase&) in SailingLogicTest.cpp.o
  "SailingLogicTest::testIsThereChangeToAWAorBearing()", referenced from:
      SailingLogicTest::addTestsToSuite(CppUnit::TestSuiteBuilderContextBase&) in SailingLogicTest.cpp.o
  "CppUnit::SourceLine::SourceLine(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)", referenced from:
      SailingLogicTest::testArrivedAtDest() in SailingLogicTest.cpp.o
      SailingLogicTest::testGetBearing() in SailingLogicTest.cpp.o
...

完整的日志可以在这里找到:https://gist.github.com/VikomMedia/71ee83dcd6f7b538a343

结果与 -stdlib=libc++ 和 -stdlib=libstdc++ 相同

非常感谢。

【问题讨论】:

    标签: c++ cmake osx-yosemite cppunit


    【解决方案1】:

    我们能够通过在 OS X 10.10 机器上将编译器更改为 G++ 来解决该问题。 clang++ 没有工作,目前原因未知。

    【讨论】:

    • 我知道这已经很老了,但是,如果有人发现这个......看起来clang 正在使用std::__1::basic_string(和其他)进行编译/链接,我认为这是正常的。但也许cppunit 是使用std::basic_string 构建/链接的,而clang 链接器并不在寻找那个。不幸的是,我不确定是否有一个简单的解决方法。我知道g++ 有像--no-as-needed 这样的链接器选项,它可以调整链接期间发生的事情。但我不知道clang 中的链接选项足以提供任何建议。希望这可以为某人指明正确的方向。
    猜你喜欢
    • 1970-01-01
    • 2012-12-12
    • 2015-01-05
    • 1970-01-01
    • 2015-11-03
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多