当我在QtCreator中编译并运行一个应用程序时,当前的工作目录是构建目录,即我的案例中名为“build-MyProject-Desktop_Qt_5_4_0_MSVC2013_32bit”的文件夹,但这不是exe所在的目录。 exe可以在debug或release子目录中找到,当我在QtCreator之外运行exe时,它是“当前工作目录”。如何让QtCreator也将此路径用作当前工作目录?我已经尝试在“运行”设置中的“项目”下更改目录,但看起来我不能使用不同的目录进行调试和发布构建。
编辑:在我看来,调用这个副本有点牵强,因为“重复”指的是创建数据库,而我的指的是来自QtCreator的奇怪行为。我实际问的问题是如何更改QtCreator的属性,因为从父文件夹调用我的exe是很奇怪的。 Visual Studio从未对我这样做过。课程(不要使用当前的工作目录,除非你明确设置它)可能是相同的,但问题是完全不同的,所以我无法通过搜索stackoverflow而不是询问来找到我的问题的解决方案。
答案 0 :(得分:1)
如果您需要查找与可执行文件相关的文件,那么依赖当前工作目录并不是一个好主意,当前工作目录取决于调用程序的位置,而不是可执行文件所在的位置。
要查找可执行文件的位置,请使用QCoreApplication::applicationDirPath
。注意,就跨平台可移植性而言,这仍然有点不稳定,例如,根据惯例,Unix或MacOS倾向于将与您的程序相关的文件放在与Windows PC完全不同的位置。
如果我这样打电话给你的程序:
some/subdir/yourprogram
当前工作目录不是some/subdir
,您的逻辑将失败。
答案 1 :(得分:0)
如果您希望程序始终使用可执行文件的位置作为其工作目录,那么您可以从应用程序代码中执行此操作
QDir::setCurrent(QCoreApplication::applicationDirPath());
答案 2 :(得分:-1)
正如Kevin Krammer提出的oposite workAround,您可以在Qt Creator之外更改工作目录:
承认此配置: C:\ buildDir \调试 C:\ buildDir \释放
在C:\buildDir\launch.bat
(例如)中制作一个批次,用于启动您的可执行文件:release\yourexe.exe
此批处理可以迟早用于指定一些有用的环境变量或记录重定向。
(PS:我想你在Windows下有关你的编译器,但这在linux上的工作方式类似)