繁体   English   中英

在OSX上构建的应用无法找到配置文件

[英]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文件夹中,并且可以在运行时找到它。

另外,一定要考虑使用QSettingsQJson 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM