更改当前工作目录 VS13?
Posted
技术标签:
【中文标题】更改当前工作目录 VS13?【英文标题】:Change current working directory VS13? 【发布时间】:2014-02-01 14:41:04 【问题描述】:正如post 中所述,当我调试我的 SDL 程序时,工作目录是相对于 .vcproj 而不是 .exe(应该是 IMO)
所以我想知道是否有任何方法可以更改它,所以当我按 F5 时,路径将相对于 .exe 而不是 .vcproj? 我正在使用的当前(相对简单的)解决方法是简单地打开文件夹并从那里启动程序,但我更喜欢简单地按 F5。
【问题讨论】:
不是,默认工作目录就是EXE所在的位置。你项目的Debug目录正常。您不应该更改它,它也是您的程序在用户机器上运行时的默认设置。但值得检查以确认您的程序在您希望的位置不存在时不会爆炸。项目 + 属性、调试、工作目录设置。确保您在$(ProjectDir)..
和 `C:\` 中幸存下来。请注意,这通常意味着您必须将资产 xcopy 到构建目录。构建后事件。
@HansPassant 工作目录的默认VS设置是$(ProjectDir)
,所以不是exe所在的目录。
你是对的。将其更改为 $(TargetDir)。
【参考方案1】:
对您的问题的天真回答是,您可以将 Debugging 配置属性中的 Working Directory 选项设置为 $(TargetDir)
。默认设置为$(ProjectDir)
,默认情况下项目目录不是可执行文件的输出位置。但是,我不建议您使用此选项,如下所述。
您试图以错误的方式解决此问题。您的基本问题是您假设工作目录与包含可执行文件的目录相同。没有理由这样,你不应该依赖它。您知道这些文件与可执行文件位于同一目录中,因此您应该查看那里,而不是工作目录,它只是有时巧合地与可执行文件目录相同。
因此,与其依赖进程的调用者来根据自己的喜好设置工作目录,不如让您的程序独立于工作目录。您声明您希望使用您知道相对于可执行目录的位置的文件。于是就有了答案。使用包含可执行文件的目录作为基础,构建文件的完整路径。
如果您需要找出可执行文件的位置,请调用GetModuleFileName()
,并去掉文件名。你剩下的是包含你的可执行文件的目录。将其与文件的相对路径结合起来,您的代码现在就独立于工作目录了。
【讨论】:
我对此有点困惑,在 SDL 中加载时,我使用“textures/mtex.png”之类的相对路径,如果我启动 .EXE,则该路径可以正常工作,但如果我不使用F5,你能澄清一下吗?我不应该使用相对路径吗? 您的文件位于相对于可执行文件路径的固定位置。但是您尝试通过提供一个被解释为相对于工作目录的相对路径来加载它们。工作目录与可执行目录不同。有时,但偶然,它们碰巧是相同的,但并非总是如此。因此,由于您的文件位于相对于可执行文件路径的固定位置,因此请以这种方式加载它们。以上是关于更改当前工作目录 VS13?的主要内容,如果未能解决你的问题,请参考以下文章
git 工作目录 vs 暂存区 vs 本地仓库 vs .git 文件夹