Добрый день!
Qt собираю MSVS 2008 в виде двух версий: static и shared. В итоге у меня получается 2 папки (два значения QTDIR): в одной лежит static версия qt, в другой - shared. Со студией я использую Visual Studio Add-in, который позволяет выбрать нужную версию Qt из нескольких имеющихся. Как работает этот addin? Очевидно, он задает в проекте значение переменной QTDIR.
Внимание, вопрос!
Каким образом можно вручную задать QTDIR для конкретного проекта?Для чего все это нужно. Дело в том, что я решил сделать библиотеку, которая будет содержать часто употребимые функции, классы, виджеты. Библиотека эта - static library. И все бы хорошо, но когда у тебя один проект собирается с библиотеками qt версии static, а другой - с библиотеками shared, возникает куча warning'ов вида:
1>QMiniLibsd.lib(axdoc.obj) : warning LNK4217: локально определенный символ ??6QTextStream@@QAEAAV0@ABVQString@@@Z (public: class QTextStream & __thiscall QTextStream::operator<<(class QString const &)) импортирован в функцию "void __cdecl ml::qt::CreateDocumentation(class QString const &,class QString const &)" (?CreateDocumentation@qt@ml@@YAXABVQString@@0@Z)
1>QMiniLibsd.lib(axdoc.obj) : warning LNK4217: локально определенный символ ??0QTextStream@@QAE@PAVQIODevice@@@Z (public: __thiscall QTextStream::QTextStream(class QIODevice *)) импортирован в функцию "void __cdecl ml::qt::CreateDocumentation(class QString const &,class QString const &)" (?CreateDocumentation@qt@ml@@YAXABVQString@@0@Z)
1>QMiniLibsd.lib(axdoc.obj) : warning LNK4217: локально определенный символ ?open@QFile@@UAE_NV?$QFlags@W4OpenModeFlag@QIODevice@@@@@Z (public: virtual bool __thiscall QFile::open(class QFlags<enum QIODevice::OpenModeFlag>)) импортирован в функцию "void __cdecl ml::qt::CreateDocumentation(class QString const &,class QString const &)" (?CreateDocumentation@qt@ml@@YAXABVQString@@0@Z)
Эти предупреждения вылазят, если QTDIR моей библиотеки и проекта различаются. И получается, что для каждого проекта, использующего мою библиотеку, нужно задавать нужный QTDIR и пересобирать всю библиотеку. Это очень неудобно.
Моя библиотека не использует lib-файлы Qt, эти файлы задает проект. Я хочу задать QTDIR для каждой конфигурации проекта: (debug, release, static_debug, static_release), но это не получается сделать, addin задает его на весь проект.
Может быть эту проблему можно решить и по-другому?