将CWD设置为源目录,而不是构建目录

时间:2012-10-11 16:09:02

标签: c++ linux makefile cross-platform qmake

在C中,当使用FILE中的stdio.h结构时,如果程序员尝试打开文件,则当前工作目录将相对于构建目录。

是否有某种设置(可能是编译器标志),我可以使用它来允许在编译或运行时将CWD设置为源目录?最好是从Windows到* nix跨平台的方法,但如果不可行,那就让我们说* nix。

我目前在Linux上使用GCC / G ++,使用没有Qt库的qmake。

另外,我使用C FILE IO方法而不是C ++的std::ifstream的主要原因只是个人偏好,以防有人要求。

1 个答案:

答案 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文件中反斜杠的数量。