crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Проблемы линковки Qt-проекта под Windows на cmake
mva
  опции профиля:
сообщение 22.11.2012, 14:05
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 104
Регистрация: 15.3.2009
Из: Киров
Пользователь №: 615

Спасибо сказали: 3 раз(а)




Репутация:   0  


Доброго дня!

Имеется собственное поделие на Qt4. Собирается и запускается под Linux и под Windows (MinGW) нормально с использованием qmake. Перевожу все это хозяйство на cmake.
Теперь под Linux собирается нормально, но под Windows возникает ошибка при линковке:

C:\work\qbalance1\src\qbalance\build>mingw32-make
Linking CXX executable qbalance.exe
Creating library file: libqbalance.dll.a
c:/qt/2010.05/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../libmingw32.a(main.o):m
ain.c:(.text+0x104): undefined reference to `WinMain@16'
collect2: ld returned 1 exit status
mingw32-make[2]: *** [qbalance.exe] Error 1
mingw32-make[1]: *** [CMakeFiles/qbalance.dir/all] Error 2
mingw32-make: *** [all] Error 2


Вот конфиг cmake:
project ( qbalance )

cmake_minimum_required ( VERSION 2.8 )

find_package ( Qt4 REQUIRED )

include( ${QT_USE_FILE} )

include_directories( ${CMAKE_BINARY_DIR} )

set ( PROJECT_NAME_SRCS
    ./main.cpp
    
    ./kernel/app.cpp
    ./kernel/essence.cpp

     ...

    ./storage/dbfactory.cpp
    ./storage/mysqlrelationaltablemodel.cpp

    )

set ( PROJECT_NAME_HDRS

    ./kernel/app.h
    ./kernel/essence.h

    ...

    ./storage/dbfactory.h
    ./storage/mysqlrelationaltablemodel.h

     )
    
set ( PROJECT_NAME_RCS
       ../../resources.qrc
    )


set( PROJECT_NAME_UIS
    )
  

find_package ( Qt4 REQUIRED )

set ( QT_USE_QTXML TRUE )
set ( QT_USE_QTSQL TRUE )
set ( QT_USE_QTSCRIPT TRUE )
set ( QT_USE_QTNETWORK TRUE )
set ( QT_USE_QTUITOOLS TRUE )

include ( ${QT_USE_FILE} )


if (${CMAKE_SYSTEM_NAME} STREQUAL Windows)

  set_property ( DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELEASE QT_NO_DEBUG )

  set ( CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_PLUGIN -DQT_THREAD_SUPPORT -DQDESIGNER_EXPORT_WIDGETS -DQT_NEEDS_QMAIN")


  if ( MINGW )
    # resource compilation for MinGW
    add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.o
                        COMMAND windres.exe -I${CMAKE_CURRENT_SOURCE_DIR} -i${CMAKE_CURRENT_SOURCE_DIR}/resources.rc
                             -o ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.o )
    set ( PROJECT_NAME_SOURCES ${PROJECT_NAME_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.o)
  else ( MINGW )
    set ( PROJECT_NAME_SOURCES ${PROJECT_NAME_SOURCES} resources.rc)
  endif ( MINGW )
else ()
endif ()

qt4_wrap_cpp ( PROJECT_NAME_MOC_HDRS ${PROJECT_NAME_HDRS} )

qt4_add_resources ( PROJECT_NAME_RCS_SRCS ${PROJECT_NAME_RCS} )        

add_executable ( ${PROJECT_NAME} WIN32 ${PROJECT_NAME_MOC_HDRS} ${PROJECT_NAME_SRCS} ${PROJECT_NAME_RCS_SRCS} ${PROJECT_NAME_SOURCES} )

target_link_libraries ( ${PROJECT_NAME} ${QT_LIBRARIES} )


В чем может быть проблема?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 24.4.2024, 15:33