【发布时间】:2013-06-18 15:59:48
【问题描述】:
我有一个使用 Google Test 的 C++11 项目,它在 Linux 中构建得很好。在 Mac 上,我很难将它集成到我的代码库中。问题似乎是,虽然我的代码使用 C++11,但 Google 代码使用 TR1。因此,enum 和 unordered_set 等 TR 数据结构的包含方式不同。
Google 测试示例按照提供的方式完美构建和运行。如果我使用 clang++ 而不是 g++,这些示例也可以构建得很好。 (我的代码只适用于 clang++,所以我使用它来构建。)最后,如果我使用 -std=c++11,Google 的代码也会构建和运行。
但是,如果我使用 -stdlib=libc++,Google 测试不会在我的 mac 上使用 clang++ 构建。它报告它找不到 tr1/tuple,这当然是真的。这是个问题,因为如果我使用-stdlib=libstdc++(或没有stdlib 参数),my 代码不会生成。
当然,我可以将所有代码切换到旧标准。然而,这非常令人讨厌。有没有办法让这些代码库在 Mac 上愉快地并存?
我的代码在 Ubuntu 12.04 计算机上使用 g++ 4.6.3 的 Google 测试构建得很愉快。 mac 运行的是 OSX 10.8.3。它正在运行 g++ 4.2.1 和 clang 4.2++。
感谢您的帮助, 大卫
PS:我对 C++ 有点陌生,如果这是一个愚蠢的问题,请原谅我。
编辑:将“OS/X”更改为“OSX”。 (是的,我已经那么老了。)
【问题讨论】:
-
您在 MacOSX 上使用哪些编译器和哪些版本?我相信,如果您在 Mac 上构建 GCC 4.8,它将像 Linux 一样编译您的代码!今天大多数 Linux 的 GCC 都比 4.2 更新!
-
Basile,做到了!谢谢。
标签: c++11 xcode4.2 googletest tr1 clang++