英特尔 TBB 集成问题 - Google 测试项目中的 VS2013 编译错误

Intel TBB integration issue - VS2013 Compilation error in Google Test project

我有一个具有这种结构的 VS2013 解决方案:

gtestalgo 项目对 algo 项目存在构建依赖性。

algo 项目单独构建成功。算法项目包括英特尔 TBB:Linker 属性包含附加库目录“$(tbb_path)\lib\intel64$(tbb_subdir)”和输入“tbb.lib”。

gtestalgo 项目无法编译。错误都与 TBB 有关。更准确地说,错误是指算法项目中无法识别 TBB 的文件,例如 "TBB is not a class or namespace name"。 gtestalgo 项目已将 ../algo 作为附加包含目录,其中 ../algo 包含算法项目的所有源文件和头文件。 gtestalgo 项目链接库 algo.lib,并且 Linker 其他库目录和输入已正确设置。 gtestalgo 项目中的源代码包括来自算法项目的几个头文件:#include "algo_main.h",等等...

我试图 Link TBB 到 gtestalgo 项目(具有与算法项目相同的 Linker 属性),我也试图删除这个 Link。在这两种情况下,编译错误是相同的。

Sources in gtestalgo project include several header files from algo project: #include "algo_main.h", etc...

这表明如果 Algo header 文件包含 TBB,将此类 Algo header 包含到 GTestAlgo 项目中会带来对 TBB 的依赖。

由于 Algo 项目编译良好,我得出结论,它正确设置了包含目录,因此可以找到 TBB headers。

但是我在你的描述中没有看到GTestAlgo项目中的Include目录是如何设置的。将它们设置为与 TBB 位置相同的方式,它可能会编译正常。

You can include it directly with something like #include "../algo/stdafx.h" (in gtestalgo/stdafx.h if there is one).

这足以解决问题。算法项目中预编译的 stdafx header 中的某些包含对 gtestalgo 项目不可见。