Russian Qt Forum
Май 15, 2024, 23:05 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] qbs и ccp.defines  (Прочитано 3159 раз)
SLiDER
Гость
« : Январь 14, 2015, 17:00 »

Ситуация такая, необходимо передать в компилятору строковый литерал, например, такого вида TEXT="Blah-blah-blah". Воспользуемся для этого списком из модуля cpp -> cpp.defines

cpp.defines: 'TEXT="Blah-blah-blah"'

или же

cpp.defines: "TEXT=\"Blah-blah-blah\""

Инет и документация говорят что эти строки идентичны и должны работать. И они действительно идентичны, но не работают, ибо в итоге qbs превращает этот define в следующего вида гадость

"-DTEXT="\^""Blah-blah-blah"\^"""

Естественно компилятор ее не жрёт. Что делать ума не приложу. Судя по исходникам характерно это только для винды.
« Последнее редактирование: Январь 14, 2015, 18:10 от SLiDER » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1 : Январь 14, 2015, 18:03 »

У меня все работает:

Код
 
Project {
   ...
   readonly property stringList generalDefines: {
       var defines = [];
       defines.push("ORGANIZATION_NAME=\"" + project.productManufacturer + "\"");
       defines.push("APPLICATION_NAME=\"" + project.productName + "\"");
       defines.push("PRODUCT_VERSION=\"" + project.productVersion + (project.releaseType ? ("-" + project.releaseType) : ("")) + "\"");
       ...
       defines.push("XXX_RSSI_SERVICE_UUID=\"2F5E50FF-DDD1-4412-ACEE-D11D923EEEEA\"");
       ...
       return defines;
   }
   ...
}
 
Application {
   Depends { name: "cpp" }
   ...
   cpp.defines: project.generalDefines
   ...
   Export {
       Depends { name: "cpp" }
       cpp.defines: product.cpp.defines
   }
}
 

Код
C++ (Qt)
...
void MainDialog::setProductVersion()
{
   ui->versionLabel->setText(PRODUCT_VERSION);
}
...
 

PS: Windows, MSVC2013

« Последнее редактирование: Январь 14, 2015, 18:07 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
SLiDER
Гость
« Ответ #2 : Январь 14, 2015, 18:10 »

Вся фигня в том что макрос TEXT уже был определён в каком-то системном заголовочнике, поэтому у компилятора сносило башню. Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.204 секунд. Запросов: 24.