【问题标题】:How to add path in qt .pro file via DEFINE如何通过 DEFINE 在 qt .pro 文件中添加路径
【发布时间】:2019-06-04 11:03:19
【问题描述】:

我想在 .pro 文件中添加我的翻译文件夹的路径,该路径可以从 C++/QML 部分访问,也可以在 .pro 文件中使用。

我遇到了 DEFINES+= 函数,并使其与数字 PI 的示例一起使用。可以使用 qDebug()

现在我有一个翻译文件夹,位于 .pro 文件上方两个目录,称为翻译。因此我尝试使用这样的东西:

DEFINES += "TRANSPATH=\"../../translations\""

但是当我尝试通过 qDebug 访问它时,我得到了错误 - 预期的主要表达 和 - “.”之前的预期不合格 id令牌

在我的 .pro 文件中,我也想访问 TRANSPATH,但像使用它一样

 TRANSLATIONS += \
     $$(TRANSPATH)/test_TEST.ts \
     ../../translations/de_DE.ts \
     ../../translations/zh_CN.ts
 }

只会导致这个错误:

  Updating '../../../../../../../test_TEST.ts'...
      Found 63 source text(s) (63 new and 0 already existing)
  Cannot create /test_TEST.ts: Zugriff verweigert  
  Updating '../../translations/de_DE.ts'...
      Found 63 source text(s) (0 new and 63 already existing)

我试图在网上找到其他示例,但没有找到任何有用的东西。 在 TRANSLATIONS += 部分中,我将措辞更改为:

  TRANSPATH/test_TEST.ts
  {TRANSPATH}/test_TEST.ts 
  $$TRANSPATH/test_TEST.ts
  $${TRANSPATH}/test_TEST.ts

但没有任何效果。这是我第一次尝试定义某些东西,也许我做错了?请帮忙

示例代码/.pro 文件:

 # this file will be loaded from the main import path
  MAIN_QML_FILE = main.qml
  INCLUDEPATH += ./Plugins
  INCLUDEPATH += ./qml
  DEFINES += "PI=\"3.1415926\""
  DEFINES += "TRANSPATH=\"../../translations\""
  QT += core
  # this is only seen by the linguist tools (lupdate)
  lupdate_only{
  SOURCES = \
      ../../qml/Widgets/SomeFiles/*.qml

  TRANSLATIONS += \
      $$(TRANSPATH)/test_TEST.ts \
      ../../translations/de_DE.ts \
      ../../translations/zh_CN.ts
  }

TRANSPATH 应指向与 ../../translations/de_DE.ts 相同的文件夹 路径可以。该路径将从 C++ 重用于自定义 QTranslator 对象。

【问题讨论】:

    标签: qt qmake


    【解决方案1】:

    首先,这个错误来自qmake

    Cannot create /test_TEST.ts: Zugriff verweigert
    

    来自这里:

    $$(TRANSPATH)/test_TEST.ts
    

    您正在引用一个未定义的变量,即 TRANSPATH。当你这样做时:

    DEFINES += "TRANSPATH=\"../../translations\""
    

    您没有定义 变量:您正在使用 -D 标志将定义附加到编译器命令行(您可以在编译输出窗格中的创建者中检查这一点)。

    所以,只需要一个qmake 变量

    TRANSPATH = ../../translations
    

    现在您可以在专业文件的其他地方使用它,例如

      TRANSLATIONS += \
          $$(TRANSPATH)/test_TEST.ts \
          ../../translations/de_DE.ts \
          ../../translations/zh_CN.ts
      }
    

    你也可以在DEFINES 中使用它,但要注意转义:

    DEFINES += "TRANSPATH=\\\"$$TRANSPATH\\\""
    

    在你的编译器中你会发现

    -DTRANSPATH=\"..\..\translations\"
    

    与其他标志一起。

    现在你可以放心了

    qDebug() << TRANSPATH; 
    

    在您的源代码中。

    【讨论】:

    • 仍然没有到达正确的文件夹...但是现在可以从 C++ 访问更新 '../../../../../../../test_TEST.ts' ...找到 63 个源文本(63 个新的和 0 个已经存在的)无法创建 /test_TEST.ts: Zugriff verweigert
    猜你喜欢
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 2021-11-09
    • 2011-02-14
    相关资源
    最近更新 更多