Qt lupdate和条件包含在.pro文件中

Qt lupdate和条件包含在.pro文件中,qt,translation,Qt,Translation,我有一个.pro文件,其中包含条件包含,如下所示: contains(CONFIG, embedded) { SOURCES += a.cpp HEADERS += a.h } else { SOURCES += b.cpp HEADERS += b.h } 当我从终端运行lupdate工具(lupdate myproject.pro)时,只处理b.h和.cpp(因为embedded不在CONFIG变量中)。 如何让lupdate

我有一个.pro文件,其中包含条件包含,如下所示:

contains(CONFIG, embedded) {  
    SOURCES += a.cpp  
    HEADERS += a.h  
}  
else {  
    SOURCES += b.cpp  
    HEADERS += b.h  
}  
当我从终端运行lupdate工具(lupdate myproject.pro)时,只处理b.h和.cpp(因为embedded不在CONFIG变量中)。

如何让lupdate处理.pro文件中包含的所有文件?

作为最后手段,您可以使用
lupdate
模式,该模式不关心
pro
文件,而只是扫描文件:

lupdate [options] [source-file|path]... -ts ts-files

在Qt4.7.1上适用于我-lupdate从两个条件块中选择要转换的字符串。您正在构建哪个版本的Qt?你的.pro文件
语言
翻译
可以吗?我发现这确实有效。问题似乎是一个.cpp包含另一个.cpp文件(!),并且出于某种原因lupdate不喜欢它(我在OSX上工作)。是的,lupdate不通过C/C++预处理器运行这些文件。它只是从源代码中提取要翻译的字符串,但文件本身包含在源代码中。SOURCES+=a.cpp b.cpp文件a.cpp包含b.cpp,并且由于一个或另一个原因,未拾取b.cpp中的翻译字符串。当我从源中删除a.cpp时,字符串就会被拾取。奇怪的是,我最终从一个shell脚本调用了lupdate(这似乎避免了include问题)。谢谢