В С, при использовании FILE
структура из stdio.h
текущий рабочий каталог будет относиться к каталогу сборки, если программист попытается открыть файл.
Есть ли какая-либо настройка (возможно, флаг компилятора), которую я могу использовать, чтобы позволить CWD быть установленным в исходный каталог во время компиляции или выполнения? Желательно метод, который кроссплатформенный от Windows до * nix, но если это невозможно, давайте просто скажем * nix.
В настоящее время я работаю в Linux, с GCC / G ++, использую qmake без библиотек Qt.
Кроме того, основная причина, по которой я использую C FILE
Метод ввода-вывода в отличие от 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.
Других решений пока нет …