如何通过DEFINE在qt.pro文件中添加路径

如何通过DEFINE在qt.pro文件中添加路径,qt,qmake,Qt,Qmake,我想在.Pro文件中添加一个我的翻译文件夹的路径,它可以从C++ /QML部分访问,也可以在.Pro文件中使用。p> 我遇到了DEFINES+=函数,并以数字PI为例使其工作。此定义可以用qDebug Ge()从C++调用 现在我有一个翻译文件夹,位于.pro文件上方的两个目录中,称为translations。因此我试着用这样的方法: DEFINES += "TRANSPATH=\"../../translations\"" 但是当我试图通过qDebug访问它时,我得到了错误 -预期主表达式

我想在.Pro文件中添加一个我的翻译文件夹的路径,它可以从C++ /QML部分访问,也可以在.Pro文件中使用。p> 我遇到了DEFINES+=函数,并以数字PI为例使其工作。此定义可以用qDebug Ge()从C++调用 现在我有一个翻译文件夹,位于.pro文件上方的两个目录中,称为translations。因此我试着用这样的方法:

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)
我试图在网上找到其他例子,但没有找到任何有用的。 在翻译+=第一部分中,将措辞更改为:

  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++中重新使用,用于自定义qter对象。

首先,这个错误从<代码> qGuest >:

Cannot create /test_TEST.ts: Zugriff verweigert
来自这里:

$$(TRANSPATH)/test_TEST.ts
您正在引用一个未定义的变量,即TRANSPATH。执行此操作时:

DEFINES += "TRANSPATH=\"../../translations\""
您没有定义变量:您正在使用
-D
标志将define附加到编译器命令行(您可以在creator的“编译输出”窗格中进行检查)

所以,只要有一个
qmake
变量

TRANSPATH = ../../translations
现在,您可以在pro文件的其他位置使用它,例如

  TRANSLATIONS += \
      $$(TRANSPATH)/test_TEST.ts \
      ../../translations/de_DE.ts \
      ../../translations/zh_CN.ts
  }
您也可以在定义中使用它,但要注意转义:

DEFINES += "TRANSPATH=\\\"$$TRANSPATH\\\""
在你的编译器中,你会发现

-DTRANSPATH=\"..\..\translations\"
和其他旗帜一起

现在你可以放心了

qDebug() << TRANSPATH; 

qDebug()仍未到达正确的文件夹。。。但是从C++访问现在正在更新……/…/ /…/…/…/TestyTest.TS…找到63个源文本(63个新文本和0个现有文本)无法创建/测试\u test.ts:Zugriff verweigert