Здравствуйте, гость ( Вход | Регистрация )
SABROG | Дата 25.1.2010, 22:34 |
Объяснения не написали. Thiago отrejectил и только такой коммент оставил: Цитата Please clean up your environment. Never mix different compiler settings. The contents of INCLUDE and LIB are used to tell Qt where to find headers and libraries. Вольный перевод такой: пожалуйста очистите ваше окружение (вероятно он о друзьях и родных ) Никогда не смешивайте настройки разных компиляторов. Содержимое INCLUDE и LIB используется чтобы сказать Qt где искать заголовки и библиотеки. Собственно с чего начали к тому и вернулись:
Пойду ему ответ оставлю, что они сами миксуют эти settings ибо INCLUDE и LIB используются совместно и Qt и MSVC. |
|
Litkevich Yuriy | Дата 23.1.2010, 19:36 |
только теперь меня мучают сомнения ну ничё, напишут объяснение, ежели ты не прав |
|
SABROG | Дата 23.1.2010, 18:12 |
Написал, только теперь меня мучают сомнения. Все-таки в коде идет проверка на расширение файла ".lib" и только в этом случае берется путь из LIB. То, что INCLUDE берется для всех .h файлов конечно не правильно. Однако INCLUDE вроде бы не влияло на сборку. Я похоже что-то упустил... | |
Litkevich Yuriy | Дата 23.1.2010, 16:17 |
Особенно стоит обратить внимание на ".lib" SABROG, пиши рапорт тролям. И приведи этот фрагмент кода. |
|
SABROG | Дата 23.1.2010, 16:04 |
Да этот configure злой вообще, вот метод из configureapp.cpp:
Т.е. он максимум что учитывает это винда это или не винда. Особенно стоит обратить внимание на ".lib", в этом методе сделано всё для MSVC и совершенно не учитываются особенности MinGW, т.е. ".a" библиотек как будто не существует. |
|
Litkevich Yuriy | Дата 23.1.2010, 15:17 |
как-то мне вообще в голову не приходило, что компиллери конфигуратор могут смотреть переменные окружения, кроме PATH и HOME | |
SABROG | Дата 23.1.2010, 13:33 |
Я почему-то всегда думал, что переменная окружения LIB также действует и для g++/MinGW. Однако сегодня обнаружил, что это не так. А выяснил я это следующим образом. Обычно у меня есть заранее подготовленный файл типа build_qt.bat, где прописаны все переменные окружения и параметры для configure, чтобы собрать Qt. Я решил собрать Qt на работе, но мне нужны были ресурсы компьютера и я поэтому выполнил только configure без сборки всей библиотеки. Сегодня я решил уже дособрать Qt и с удивлением обнаружил, что не линкуются библиотеки OpenSSL. Как я только не изгалялся над переменной LIB, чтобы линкер его увидел ничего не помогало. Решил погуглить и выяснил, что оказывается для MinGW/g++ используется переменная LIBRARY_PATH, а не LIB. Когда я задал эту переменную, то всё пошло собираться дальше, что не могло не обрадовать. Однако в голове появилась правильная мысль: почему на системе где стоят библиотеки MSXML и глобально прописана переменная LIB с путем до этой самой мелкософтовской библиотеки Qt линковаться отказывается. И тут до меня дошло, что configure Qt насильно выдирает путь из переменной LIB, которую подставляет в линкер через параметр -L"" и это при том, что он явно знает каким компилятором он будет собирать библиотеку. Отсюда получается, что в configure есть баг/недоработка, т.к. он не учитывает, что переменная LIB и INCLUDE никаким образом не относятся к компилятору g++/MinGW, а относятся только к компилятору Microsoft. С MinGW вместо этих двух переменных нужно использовать переменные LIBRARY_PATH для указания пути, где лежат файлы библиотек (.a), а для инклудов/хедеров/заголовков (.h, .hpp) нужно использовать CPLUS_INCLUDE_PATH. Сначала я хотел убрать любое упоминание о LIB и INCLUDE из своих командных файлов с окружением для MinGW, а потом понял, что это не излечит "багу" qt и поэтому остановился на таком варианте:
|
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 19.4.2024, 20:15 |