在C中,当使用FILE
中的stdio.h
结构时,如果程序员尝试打开文件,则当前工作目录将相对于构建目录。
是否有某种设置(可能是编译器标志),我可以使用它来允许在编译或运行时将CWD设置为源目录?最好是从Windows到* nix跨平台的方法,但如果不可行,那就让我们说* nix。
我目前在Linux上使用GCC / G ++,使用没有Qt库的qmake。
另外,我使用C FILE
IO方法而不是C ++的std::ifstream
的主要原因只是个人偏好,以防有人要求。
答案 0 :(得分:1)
在.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文件中反斜杠的数量。