【问题标题】:How to get project name from C++ code?如何从 C++ 代码中获取项目名称?
【发布时间】:2018-02-10 18:47:09
【问题描述】:

我想写信给<CacheDir>/myProjectName,其中<CacheDir> 的值是:

QStandardPaths::writableLocation(QStandardPaths::CacheLocation)

但我不想在 C++ 中硬编码我的项目名称,因为那样会创建 2 个更新位置。有没有办法以编程方式获取它?

【问题讨论】:

  • 什么定义了“myProjectName”?您需要那个东西(无论它是什么)在编译时为您的程序提供名称。作为define 或文件中的变量或其他东西。 C++ 作为一种语言没有“项目名称”的概念——因此无论定义什么,都需要以某种方式公开它,以便在编译期间获得。

标签: c++ qt path directory projects-and-solutions


【解决方案1】:

处理应用程序名称的标准 Qt 方式是使用 QCoreApplication::applicationName() - 当然您必须在某个地方设置它(通常在您创建应用程序的 main() 函数中)。

完成此操作后,应用程序名称实际上将用作应用程序特定 QStandardPath 的一部分 - 例如CacheLocation 的文档说,对于 Windows,CacheLocation 是C:/Users/<USER>/AppData/Local/<APPNAME>/cache,这意味着应用程序名称已经在路径中。

因此,对于您的示例,您可以为您的应用创建一个独特的路径,如下所示:

auto myCacheFile = QString("%1/cache.txt")
             .arg(QStandardPaths::writableLocation(QStandardPaths::CacheLocation));

【讨论】:

  • 显式字符串连接最好用格式字符串代替:auto myCacheFile = QStringLiteral("%1/%2/cache.txt).arg(QStandardPaths:writableLocation(QStandardPaths::CacheLocation)).arg(qApp.applicationName());
猜你喜欢
  • 2013-08-21
  • 2015-09-08
  • 2023-03-05
  • 2011-06-24
  • 1970-01-01
  • 2013-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多