在 C 中,当使用 stdio.h
中的 FILE
结构时,如果程序员尝试打开文件,则当前工作目录将相对于构建目录。
是否有某种设置(可能是编译器标志)我可以使用它来允许在编译或运行时将 CWD 设置到源目录?最好是从 Windows 到 *nix 的跨平台方法,但如果那不可行,我们就说 *nix。
我目前在 Linux 中工作,使用 GCC/G++,使用没有 Qt 库的 qmake。
此外,我使用 C FILE
IO 方法而不是 C++ 的 std::ifstream
的主要原因只是个人偏好,以防有人问起。
最佳答案
在您的 .pro 文件中,您可以将源目录定义为一个宏,然后在您的源代码中 chdir()
到它。
# myproject.pro
DEFINES+=SRCDIR=\\\"$$PWD\\\"
# myapp.cpp
int main(int argc, char** argv) {
if (chdir(SRCDIR)) {
perror("chdir to " SRCDIR);
}
// ... rest of code
}
让它在 Windows 上运行可能涉及调整 .pro 文件中反斜杠的数量。
关于c++ - 将 CWD 设置为源目录,而不是构建目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12843936/