我有一个库和一个使用库的控制台应用程序。该库有一个包含源文件和头文件的文件夹。
我的项目位于子目录/内部目录中,但我想要包含的库目录位于父目录/上层目录中。
我的项目目录:
H:\Gmail_04\gsasl-1.0\lib\libgsaslMain
包含文件在这里:
H:\Gmail_04\gsasl-1.0\src
如何使用相对于项目目录的路径,包含父目录/上层目录中的文件夹?
答案 0 :(得分:134)
您也可以使用VS的预定义宏来实现此目的,而不是使用相对路径。
$(ProjectDir)
指向.vcproj
文件的目录,$(SolutionDir)
是.sln
文件的目录。
打开项目时,您会看到可用宏列表,请转到
属性→配置属性→C / C ++→常规
并打了三个点:
在即将出现的对话框中,点击宏以查看Studio预定义的宏(请参阅MSDN了解其含义):
您可以通过键入$(MACRO_NAME)
来使用宏(请注意$
和回合括号)。
答案 1 :(得分:39)
如果我说得对,你需要..\..\src
答案 2 :(得分:20)
之前我使用过这样的语法:
$(ProjectDir)..\headers
或
..\headers
正如其他人所指出的那样,起始目录是项目文件所在的目录(vcproj
或vcxproj
),而不是主代码所在的目录。
答案 3 :(得分:5)
默认情况下,您定义的所有路径都是相对的。问题是:相对于什么?有几种选择:
请注意,在诸如$(SolutionDir)之类的宏之后,不需要添加反斜杠" \"。只需使用 $(SolutionDir)mylibdir \ mylib.lib 即可。 如果您无法使其工作,请从记事本外部打开项目文件并进行检查。
答案 4 :(得分:0)
您需要了解一些提示。
考虑您的应用在 c:\MyRepository\MyApp 下运行
路径上的一个点表示应用运行的文件夹。因此,如果您想访问 MyApp 文件夹下的某个文件夹或文件(想象一下 c:\MyRepository\MyApp\Resources\someText.txt),您可以像 var bla = File.Exists(./Resources/someText.txt)
并且您可以使用双点 (..) 上一级考虑 c:\MyRepository\SomeFolder\sometext.txt 下的文件夹
对于 MyApp,它会像
var bla = File.Exists(../SomeFolder/someText.txt)
并且可以像 2,3,4.. 一样升级
../../SomeFolder(2 级)
../../../SomeFolder(3 级)
并且路径以无点开头表示驱动器根目录。 var bla = File.Exists(/SomeFolder/someText.txt)
将在我们的场景中查找 c:\SomeFolder\someText.txt。