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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: CMake + Qt 4.5 + Windows + Debug = :(  (Прочитано 5181 раз)
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« : Декабрь 03, 2009, 15:17 »

Не работает вышеперечисленная связка. Скачал qt-sdk, создал простой проект:

main.cpp
Код:
#include <QWidget>
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget w;
    w.show();
    a.exec();
    return 0;
}

CMakeLists.txt
Код:
project(test)

cmake_minimum_required(VERSION 2.6)

find_package(Qt4 REQUIRED)
include(${QT_USE_FILE})

set(TARGET test)

add_executable(${TARGET} WIN32
main.cpp
)

target_link_libraries(${TARGET} ${QT_LIBRARIES})

Компилю релиз - все работает отлично.
Компилю под отладку: cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Debug .

Результат вылетает с ошибкой: Ошибка инициализации приложения 0x000005. ....

В чем могут быть грабли?  Непонимающий

Когда делаю qmake проект на этих исходниках, то работает и отладка и релиз.

Версии ПО:
windows xp sp2
cmake-2.6-patch 4
qt-sdk-4.5.2-2009.03
  gcc-3.4.5
msys-1.0.11


PS:
когда смотрю с чем слинковано приложение, то cmake-вариант слинкован с QtGuid4.dll, kernel32.dll, msvcrt.dll.
qmake-вариант: QtCored4.dll, mingwm10.dll, QtGuid4.dll, kernel32.dll, msvcrtXX.dll.

Я в начале думал на это, что недолинкованы либы...

Но!, релизовый cmake-вариант тоже слинкован только с QtGui4.dll, kernel32.dll, msvcrt.dll и работает...
Записан

Гугль в помощь
Dendy
Гость
« Ответ #1 : Декабрь 09, 2009, 03:42 »

Попробуйте -G "MinGW Makefiles". И убедитесь, что список Qt-библиотек верный, например так: message( "QT_LIBRARIES = ${QT_LIBRARIES}" ). Для релиза должны быть релизные библиотеки, для дебага - дебажные. И ещё, если вы указали в add_executable() тег WIN32 - то приложение должно быть дополнительно слинковано с qtmain[d].lib, поскольку там находится точка входа WinMain():

Код:
target_link_libraries(${TARGET} ${QT_LIBRARIES} ${QT_QTMAIN_LIBRARY})
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #2 : Декабрь 12, 2009, 20:42 »

A MS Debuging tools установлен?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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