crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> qmake и переменные
SABROG
  опции профиля:
сообщение 3.2.2009, 15:36
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Поправьте меня если я буду не прав, но почитав документацию я узнал следующее.

MyVar = test #определяем свою переменную

DEFINES = $${MyVar}
и
DEFINES = $$MyVar

Синонимы. В данном случае двойной доллар ($$) означает операцию взятия содержимого из переменной на этапе обработки .pro файла (qmake) и запихивания её в DEFINES. В makefile.release или makefile.debug затем можно будет наблюдать такое:

DEFINES       = -Dtest


Есть еще вариант с одинарным долларом:

MyVar = $QTDIR
и
MyVar = $(QTDIR)

Синонимы. Тут одинарный доллар ($) означает заполнение переменной непосредственно при компиляции makefile.release или makefile.debug. Т.е. qmake я мог сделать год назад, а переменную надо брать из окружения (environment) при компиляции.

Отсюда возникает несколько другой вопрос. Ну вот создал я перменную MyVar в .pro файле, присвоил ей некоторое значение. А как эту переменную экспортировать в makefile, таким образом, чтобы в нем получилось нечто такое:

CFLAGS        = -O2 -Wall $(DEFINES)
CXXFLAGS      = -O2 -frtti -fexceptions -mthreads -Wall $(DEFINES)
INSTALL_FILE    = $(COPY_FILE)
INSTALL_PROGRAM = $(COPY_FILE)
INSTALL_DIR     = $(COPY_DIR)
MyVar = $(QTDIR)


Я пытался это сделать. Но переменная туда не попадает вообще никак. Выходит я не могу повлиять на выходящий makefile? Добавить свои команды запуска других утилит, выставлять переменные и т.п. именно на этапе компиляции, а не во время запуска qmake?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 22.4.2009, 0:49
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(SABROG @ 22.4.2009, 4:10) *
а вот, чтобы присвоить ему что-то...
именно это.
Т.е. возникла необходимость написать в pro-файле (это фантазия):
MY_VAR "myVarvalue"

а в коде, например, сделать так:
QString str = MY_VAR


видимо надо приползти к этому (это make-файл):
-DMY_VAR=$(MY_VAR_)

где MY_VAR_ промежуточная переменная

методом научного тыка (редактирования make-файла) пришёл к такой записи:
DEFINES       = -DMY_VAR="\"myVarvalue\""


А ларчик-то просто открывался. только для строковых констант неудобство имеется: приходится три слэша писать
pro-file:
DEFINES       += "MY_VAR=\\\"myVarvalue\\\""

make-file:
DEFINES       = -DMY_VAR=\"myVarvalue\"

ну и в коде получим аналог:
#define MY_VAR "myVarvalue"
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 23.11.2024, 5:58