Установить свойство, объявленное в одном проекте QBS от другого
У меня есть типичный сценарий разработки приложений, библиотека + приложение, оба проекта QBS. В проекте библиотеки я объявил логическое свойство staticBuild по умолчанию true, как показано ниже:
Project { // the library
property bool staticBuild: true
Product {
type: staticBuild ? "staticlibrary" : "dynamiclibrary"
name: "Lib"
}
}
В проекте приложения я использую элемент Depends для добавления Lib в качестве зависимости следующим образом:
Project { // Application
Product {
type: "application"
Depends { name: "Lib" }
Lib.staticBuild: false // want to link to a dll.
}
}
но эта ссылка на свойство не работает, я получаю сообщение об ошибке, сообщающее, что свойство не объявлено.
Как я мог это исправить?
1 ответ
Прежде всего, библиотека даже не имеет этого свойства; его родительский проект делает. Но даже если бы он это сделал, он не был бы видим, гораздо менее настраиваемым снаружи. Имейте в виду, что библиотека существует один раз, хотя от нее может быть много зависимостей. Поэтому, если вы хотите принять решение о том, как создается библиотека, вам нужно сделать это на более высоком уровне, откуда оба продукта берут информацию. Это может быть общий родительский проект (как правило, проект верхнего уровня) или специфичный для проекта модуль, к которому подключаются оба продукта. Главное в том, что решение принимается централизованно.