5

我正在尝试在 Visual Studio 中构建 gtest,但似乎在获取引用并包含为项目正确指定时遇到了一些问题。

错误 C1083: 无法打开包含文件: 'gtest/gtest.h': 没有这样的文件或目录 c:\gtest-1.6.0\src\gtest-all.cc

1>InitializeBuildStatus:
1>  Touching "Debug\GTestBuild.unsuccessfulbuild".
1>ClCompile:
1>  gtest-all.cc
1>c:\gtest-1.6.0\src\gtest-all.cc(40): fatal error C1083: Cannot open include file: 'gtest/gtest.h': No such file or directory
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:01.61

对于项目,我在 Project Project Pages > C/C++>Additional Include Directories 列表中添加了对以下内容的引用:

c:\gtest-1.6.0
c:\gtest-1.6.0\src
c:\gtest-1.6.0\include
c:\gtest-1.6.0\include\gtest

但我似乎遗漏了其他一些内容,或者可能没有设置正确,并且希望在解决这个问题方面提供一些帮助,并学习如何为未来做这件事。

PS。切换自

#include "gtest/gtest.h"
// The following lines pull in the real gtest *.cc files.
#include "src/gtest.cc"
#include "src/gtest-death-test.cc"
#include "src/gtest-filepath.cc"
#include "src/gtest-port.cc"
#include "src/gtest-printers.cc"
#include "src/gtest-test-part.cc"
#include "src/gtest-typed-test.cc"

#include <gtest/gtest.h>

// The following lines pull in the real gtest *.cc files.
#include <src/gtest.cc>
#include <src/gtest-death-test.cc>
#include <src/gtest-filepath.cc>
#include <src/gtest-port.cc>
#include <src/gtest-printers.cc>
#include <src/gtest-test-part.cc>
#include <src/gtest-typed-test.cc>

不是解决方案。我已经尝试过了,但它不起作用。

4

2 回答 2

2

如果您查看文件 gtest-all.cc 的属性页,它的 Additional Include Directories 字段应显示:

..;..\include;%(AdditionalIncludeDirectories)

如果您使用了提供的 msvc\gtest.sln,否则:

C:/gtest-1.6.0/include;C:/gtest-1.6.0;%(AdditionalIncludeDirectories)

如果您使用 CMake 创建 VS 解决方案。

如果该字段为空,则它不会获取您为整个项目设置的目录,因为它们是通过%(AdditionalIncludeDirectories)变量应用的。如果这种情况,可能值得重新下载并重新开始,因为构建不再处于良好状态。

于 2012-06-08T10:52:08.450 回答
2

检查完整的编译输出以查看这些包含目录是否被合并到编译中。它应该看起来像:

...
-Ic:\gtest-1.6.0 -Ic:\gtest-1.6.0\src -Ic:\gtest-1.6.0\include -Ic:\gtest-1.6.0\include\gtest
...

您是否也在这些目录中查找过文件?不要忘记,当您将其包含在目录中时,您必须gtest.h在以下目录中查找:

c:\gtest-1.6.0\gtest
c:\gtest-1.6.0\src\gtest
c:\gtest-1.6.0\include\gtest
c:\gtest-1.6.0\include\gtest\gtest

(注意gtest使用时的子目录#include "gtest/gtest.h"

于 2012-06-08T08:42:03.380 回答