Whi*_*sJr 5 c++ clang googletest visual-studio-2015
使用VS 2015及其新的内置clang工具集/项目模板,我无法成功构建Google Test.我收到以下错误:
Error use of undeclared identifier 'chdir'; did you mean '_chdir'?
Error use of undeclared identifier 'fdopen'
Error use of undeclared identifier 'read'
Error use of undeclared identifier 'write'
Error use of undeclared identifier 'close'
Error use of undeclared identifier 'O_RDONLY'
Error use of undeclared identifier 'O_APPEND'
Error use of undeclared identifier 'dup'; did you mean '_dup'?
Error use of undeclared identifier 'creat'; did you mean '_creat'?
Run Code Online (Sandbox Code Playgroud)
我注意到这些声明中的大多数都在这些ANSI检查块中:
#if !__STDC__
...
#endif
Run Code Online (Sandbox Code Playgroud)
是否有项目设置或我可以更改以使这些方法解决?
小智 1
我在使用 chdir 和 freopen 时遇到了类似的问题。
我将只发布我所采取的步骤,以使用 VS2015 和 Clang 启动并运行 googletest。
这将安装最新版本的 clang(在撰写本文时为 v3.9)。请注意,这是一个快照版本,而不是正式版本。
如果您不喜欢快照版本,也许可以尝试最新的发行版本。我没有测试它。我只是喜欢拥有最新的工具,尤其是当它们像 LLVM/Clang 这样快节奏的时候。
Properties-> General-> Platform Tools-> LLVM-vs2014(以及更多)(切换到LLVM-vs2014)我知道您要求使用带有 Microsoft CodeGen 的 Clang 3.7。你必须自己决定。
此外,我不喜欢对我没有编写或不知道的代码进行一些修复/更改。由于这对我来说效果很好,因此我没有进一步调查该问题。
此时它可能已经适合你了。接下来的步骤描述了构建 googletest 库并将包含目录添加到项目中。
从 github 获取 googletest。 https://github.com/google/googletest
运行 cmake-gui 并配置 googletest 以便能够构建。
生成器:Visual Studio 14 2015 Win64(我只用了64位,你也可以尝试32位)
来自 llvm 文档
(没有链接,因为没有足够的声誉:clang.llvm.org/docs/MSVCCompatibility.html):首先,Clang 尝试与 ABI 兼容,这意味着 Clang 编译的代码应该能够成功链接到 MSVC 编译的代码。
源代码在哪里:(ex. C:\libs\googletest\googletest)
(因为顶层目录下还有googlemock)
在哪里构建二进制文件:(例如C:\libs\googletest\build)
BUILD_SHARED_LIBS如果需要,则构建共享库)
CMAKE_CONFIGURATION_TYPES:调试和发布(如果愿意,请选择其他)CMAKE_INSTALL_PREFIX例如C:\libs\googletest\install)Python 2.7 是由 cmake 找到的,尽管我很确定它不是必需的。
按“配置”和“生成”。
生成解决方案文件后,转到上面指定的目录(构建二进制文件的位置,例如C:\libs\googletest\build)并打开解决方案 gtest.sln。
选择“调试解决方案配置”并右键单击“ALL_BUILD”和“构建”。完成后,右键单击安装并构建。这将创建之前指定的文件夹。
CMAKE_INSTALL_PREFIX(例如C:\libs\googletest\install)在那里,您可能想要更改库名称并添加 *d.lib 以防止文件被覆盖,并作为它是调试版本的指示符。
重复发布解决方案配置的步骤。在CMAKE_INSTALL_PREFIX(例如C:\libs\googletest\install)中,您应该找到一个 include 目录和一个 lib 目录。
在您的项目中,在“属性”->“VC++ 目录”下添加“包含目录”。
CMAKE_INSTALL_PREFIX<b>\include</b>(前任。C:\libs\googletest\install<b>\include</b>)
在您的项目中,在“属性”->“VC++ 目录”下添加“库目录”。CMAKE_INSTALL_PREFIX \lib(例如 C:\libs\googletest\install \lib)
并在Properties-> Linker-> Input->下Additional Dependencies
(gtest.lib / gtestd.lib 取决于您的配置)
之后我就能够构建并运行我的测试。
| 归档时间: |
|
| 查看次数: |
1241 次 |
| 最近记录: |