【问题标题】:Using conditions when customize qt project自定义qt项目时使用条件
【发布时间】:2013-01-22 10:40:44
【问题描述】:

美好的一天! 我有一个 qt 项目,我想使用 .pro 文件条件对其进行自定义。值得注意的是,我想使用一个 .pro 文件来获得多个输出,如下所示:

DEFINES += APP1=0 APP2=1
DEFINES += TYPE=APP1
if(TYPE == APP1) {
LIBS += <LIB1>
DESTDIR = <DIR1>
}
else {
LIBS += <LIB2>
DESTDIR = <DIR2>
}

但是当我尝试构建我的项目时,运行 qmake 时出现以下错误:

解析错误('else')

如何正确做?

【问题讨论】:

  • 尝试将} else { 放在一行中。我可以用你的例子构建一个测试项目,但我认为旧版本的 qmake 有这个问题

标签: qt qmake


【解决方案1】:

CONFIG 变量中存储的值由qmake 特殊处理。每个可能的值都可以用作范围的条件。因此,您的项目文件可以简单地写为:

CONFIG += APP1

APP1 {
  LIBS += <LIB1>
  DESTDIR = <DIR1>
} else {
  LIBS += <LIB2>
  DESTDIR = <DIR2>
}

【讨论】:

  • 谢谢!这真的有效!但是现在我还有一个问题:有什么方法可以将 CONFIG 值从 .pro-file 传递给 C++ 代码?我想这样称呼: if(CONFIG.contains(APP1) {do something})
  • 看看这个:Add a define to QMake with a value。我认为这样你就可以使用#if / #ifdef 语法
【解决方案2】:

我只想注意关于条件的 1 件事 确保大括号不是同一行。否则会失败

不错

CONFIG += opencv_32_bit

opencv_32_bit {

} else {

}

会失败

CONFIG += opencv_32_bit

opencv_32_bit 
{

}
else
{

}

我不知道为什么,但我遇到了这个问题,因为我更喜欢在下一行使用大括号

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 2020-07-25
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多