Это не имеет никакого отношения к sqlite. Или даже Qt. Или OS X.
Следующий проект делает то же самое на всех платформах.
// main.cpp
#include <fstream>
int main() {
std::ofstream{"DienstplanerDB.sqlite"} << "Ooops" << std::endl;
}
# project.pro (no Qt frameworks are linked to the executable)
CONFIG -= qt
CONFIG += c++11
TARGET = write-bundle-con-32533822
TEMPLATE = app
SOURCES += main.cpp
Теперь, когда вы нашли его, вы не должны, потому что это неправильный вопрос. Где бы это ни было, это не под вашим контролем. Почему вы ожидаете, что исходный рабочий каталог вашего графического интерфейса будет чем-то конкретным? Не. Это так просто. У вас нет контроля над ним (zip, nada, zero, really). Если вы хотите найти что-то по отношению к рабочему каталогу, вы должны сначала установить его, чтобы указать что-то полезное. Тогда нет никаких сомнений относительно того, где вещи. Используйте QStandardPaths
, чтобы получить независимое от платформы место для вашей базы данных - AppDataLocation
или AppLocalDataLocation
- хороший выбор. Убедитесь, что вы сначала задали имя приложения через QCoreApplication::setApplicationName
.
Правильно разработанное приложение не может предполагать, что любой начальный рабочий каталог доступен для записи (или даже читается) или что он имеет какое-либо конкретное значение. Как правило, в OS X набор приложений не доступен для записи, так же как папка установки не находится в Windows. Просто потому, что вы можете писать все это в настройках разработчика, это не значит, что ваши пользователи могут или что это разумно.
Вот что ваш код сделал только с вашим пользователем: у них была система Yoyodyne, Inc. YodelAbteilung Deutschland. Он имел DienstplanerDB.sqlite
с данными за 10 000 долларов, заправленными в безопасное место. Вы всерьез полагали, что вы единственный человек на планете, использующий sqlite или занимающийся реестрами ?!Поскольку вы пишете где бы вы ни находились, вы просто перезаписали его. Вы получаете иск за ущерб. Справедливо.
Не повреждайте данные ваших пользователей, пожалуйста.
В текущем рабочем каталоге * когда * был запущен исполняемый файл? – user2864740
@ user2864740 это будет каталог, доступный для прожектора и поиска, не так ли? В противном случае, есть ли у вас идея, когда текущий рабочий каталог будет использоваться при использовании qt (это не каталог dir ..)? – Barthy
Я подозреваю, хотя у меня нет опыта в OS X! - что если он был запущен из самого искателя, CWD может быть «домашним каталогом» (например, результатом 'cd $' в оболочке). – user2864740