Qt DEFINES не работает в файле проекта - PullRequest
1 голос
/ 04 сентября 2011

У меня есть файл проекта, который начинается так:

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

Итак, я определяю новую константу VERSION_NUMBER, к которой я могу затем обращаться в исходном коде. Однако позже, когда я это сделаю:

qDebug() << VERSION_NUMBER;

Компиляторы сообщают мне error: C2143: syntax error : missing ';' before 'constant', как будто VERSION_NUMBER не был определен. Кто-нибудь знает, в чем может быть причина?

1 Ответ

2 голосов
/ 04 сентября 2011

У вас есть три вопроса для решения здесь. Во-первых, вам нужно поместить это VERSION_NUMBER=$${VERSION} назначение в кавычки:

Добавить определение в qmake WITH значение?

Во-вторых, не слишком легко заставить 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).

...