Установите CWD в Source Directory, в отличие от Build Directory

В С, при использовании FILE структура из stdio.hтекущий рабочий каталог будет относиться к каталогу сборки, если программист попытается открыть файл.

Есть ли какая-либо настройка (возможно, флаг компилятора), которую я могу использовать, чтобы позволить CWD быть установленным в исходный каталог во время компиляции или выполнения? Желательно метод, который кроссплатформенный от Windows до * nix, но если это невозможно, давайте просто скажем * nix.

В настоящее время я работаю в Linux, с GCC / G ++, использую qmake без библиотек Qt.

Кроме того, основная причина, по которой я использую C FILE Метод ввода-вывода в отличие от C ++ std::ifstream это просто личное предпочтение, на случай, если кто-нибудь спросит.

0

Решение

В вашем файле .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.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]