Qt DEFINES 在项目文件中不起作用

发布于 2024-12-02 18:15:59 字数 309 浏览 0 评论 0原文

我有一个这样开始的项目文件:

VERSION = 0.9.9.0
DEFINES += VERSION_NUMBER=$${VERSION}

因此,我定义了一个新的常量 VERSION_NUMBER,然后我可以在源代码中访问它。但是,稍后当我这样做时:

qDebug() << VERSION_NUMBER;

编译器告诉我错误:C2143:语法错误:缺少“;”在“constant”之前,就好像未定义 VERSION_NUMBER。有谁知道可能是什么原因?

I have a project file that starts like this:

VERSION = 0.9.9.0
DEFINES += VERSION_NUMBER=${VERSION}

So I define a new constant VERSION_NUMBER that I can then access in the source code. However, later when I do:

qDebug() << VERSION_NUMBER;

The compilers tells me error: C2143: syntax error : missing ';' before 'constant' as if VERSION_NUMBER was not defined. Does anybody know what could be the reason?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

焚却相思 2024-12-09 18:15:59

您在这里需要解决三个问题。首先,您需要将 VERSION_NUMBER=$${VERSION} 赋值放在引号内:

向 qmake 添加一个带有值的定义?

第二个是让 QMake 传入字符串文字并不是太容易#define。很多方法只会将按句点分隔的数字解释为格式不良的数字常量:

http://robertcarlsen.net/2009/01/06/qmake-xcode-bug-258

这可能会让你在某个地方问题...适用于我的设置,尽管这是一个三重问题:

VERSION = \\\"'0.9.9.0'\\\"
DEFINES += "VERSION_NUMBER=${VERSION}"

第三个问题 - 可能是最大的 - 是你正在使用 QMake,它已经过时了,Trolltech/Nokia 的人都知道它:

http://labs.qt.nokia.com/2009/10/12/to-make-or-not-to-make-qmake-and-beyond/

您应该切换到其他内容(就像 CMake...它支持 Qt 并由 KDE 使用)。

You've got three issues to address here. First is that you need to put that VERSION_NUMBER=$${VERSION} assignment inside of quotes:

Add a define to qmake WITH a value?

The second is that it's not overly easy to get QMake to pass in a string literal #define. A lot of ways will just interpret your numbers-separated-by-periods as a poorly formed numeric constant:

http://robertcarlsen.net/2009/01/06/qmake-xcode-bug-258

This might get you somewhere with the issue...works on my setup, although it's a triple-escaped headache:

VERSION = \\\"'0.9.9.0'\\\"
DEFINES += "VERSION_NUMBER=${VERSION}"

Third problem--probably the biggest--is that you're using QMake, which is outdated, and the Trolltech/Nokia people know it:

http://labs.qt.nokia.com/2009/10/12/to-make-or-not-to-make-qmake-and-beyond/

You should switch to something else (like CMake...which supports Qt and is used by KDE).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文