Имеется собственное поделие на 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} )
В чем может быть проблема?