Visual Studio 2010包含目录路径

4
我有一个名为myvs.sln的Visual Studio解决方案,路径如下:c:\dir1\dir2\dir3\myvs\myvs\myvs.sln。我已经安装了boost版本xxx,路径为c:\dir1\dir2\dir3\boostxxx\
在项目->属性->C/C++->常规中,我设置了../..;../../boostxxx。在boost库中,包含文件的语法如下:#include <boost/smart_ptr/shared_ptr>
我的代码文件myfile.h位于c:\dir1\dir2\dir3\yy1\myfile.h。在myfile.h中,我将boost库包含为:#include <boost/shared_ptr.hpp>。我收到一个错误,显示为:c:\dir1\dir2\dir3\yyy1/myfile.h fatal error C1083 cannot open include file boost/shared_ptr.hpp
问题是我该如何纠正它呢?
我还注意到编译器输出的错误信息中,在dir3之前使用了“\”,然后变成了“/”。
很可能我不理解相对路径的工作原理。请注意,我只想引用相对路径而不是绝对路径。有人可以帮忙吗?我正在Windows平台上使用C++ Visual Studio 2010。

你的 Visual Studio 的 "include" 列表中是否包含了所有的 Boost 头文件目录?它们是否用 ";" 分隔? - paulsm4
不,我只有一个基本目录,在那里我安装了Boost,它只是:../../boostxxx。在包含路径列表中。 - user1612986
1个回答

3

搜索路径中的相对路径是指相对于编译器的当前目录,一些简单的测试现在显示出来。

"..\.."是从编译器当前目录而不是项目目录上升两个级别。

要解决这个问题,在Visual Studio项目目录中明确地开始包含路径,按如下方式进行(字面意思):

$(ProjectDir)..\..;$(ProjectDir)..\..\BoostXXX

关于前斜线和后斜线,请在C++代码的#include指令中使用前斜线,因为这是最可移植的。

在引用Windows文件系统时(例如设置包含路径),可以使用前斜杠或后斜杠(但我喜欢使用后斜杠以便有一个单一的约定)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接