[英]app build on OSX can't find config file
我正在用C ++开发应用程序,以便在不同的操作系统上分发。 它们中的许多都有一些在启动时读取的xml配置文件,即“ my_app_config.cfg”。
在代码中,我使用Qt的文件对话框对象访问文件,并使用boost / property_tree / xml_parser.hpp进行xml解析。 非常简单的东西,非常简单的xml文件。
在Windows和Linux上,这可以正常工作,但是当我在Mac上制作应用程序时,如果无法打开该文件,则会始终抛出我在代码中写入的“无法读取配置文件:”消息。
奇怪的是,这仅在启动时调用load_config()
函数时发生,即在规范的Qt构造函数MainWindow::MainWindow(...)
。 启动后,我可以使用菜单项加载配置文件,该菜单项调用相同的load_config()
函数。
我以为也许应该将配置文件放在应用程序的Contents / MacOS文件夹中,实际的二进制文件在其中,但这也不起作用(而且我不希望用户看不到配置文件)。
这样的事情让我彻夜难眠。
最近在Mac Qt应用程序中,默认工作目录不直观。 它是硬盘驱动器的根。
您可以在程序中对此进行验证:
qDebug() << QDir::currentPath();
http://doc.qt.io/qt-5/qdir.html#static-public-members
http://doc.qt.io/qt-5/qdir.html#currentPath
这是我在Mac / OSX程序顶部放置的典型修复程序:
#if defined(Q_OS_MAC)
// Doesn't default to its app directory. Goes to root for some reason with Mavericks
QDir::setCurrent(qApp->applicationDirPath());
qDebug() << "Working Directory:" << QDir::currentPath();
#endif
现在,您应该可以将配置内容复制到Contents/MacOS
文件夹中,并且可以在运行时找到它。
另外,一定要考虑使用QSettings
和QJson
。 QSettings
确实方便存储设置和配置。
http://doc.qt.io/qt-5/qsettings.html#details
http://doc.qt.io/qt-5/json.html#overview
希望能有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.