[CMake] QTCreator project to VS2008 problems

Oli Glaser oli at glasers.org
Fri Mar 19 05:58:51 EDT 2010


I am new to cmake and QT so I thought I'd build a test project (basic forms app with two source files) in QTCreator and use CMake to port it to VS2008 to test it out. I have tried to pick the commands I need for the CMakefiles from the documentation. The cmake configure and generate went okay, but when I tried to build in VS, I got linker errors so I added the command to link the QT libraries (built with VS2008) and most of them disappeared apart from 3, I'm not sure what it's looking for now - can anyone help? here is my makefile and VS errors:

project(hello)
IF(NOT UNIX AND NOT MINGW)
  SET(MITK_WIN32_FORCE_STATIC "STATIC" CACHE INTERNAL "Use this variable to always build static libraries on non-unix platforms")
ENDIF()
find_package(Qt4 4.5.2 COMPONENTS QtCore QtGui QtXml REQUIRED )
include(${QT_USE_FILE})
QT4_AUTOMOC(main.cpp mainwindow.cpp)
add_library(LIB main.cpp)
include_directories (${HELLO_SOURCE_DIR})
link_directories(${HELLO_SOURCE_DIR})
set(SRC main.cpp
 mainwindow.cpp)
add_executable(hello ${SRC}) 
target_link_libraries(hello ${QT_LIBRARIES})  

VS Errors

Error 1 error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall MainWindow::metaObject(void)const " (?metaObject at MainWindow@@UBEPBUQMetaObject@@XZ) mainwindow.obj hello

Error 2 error LNK2001: unresolved external symbol "public: virtual void * __thiscall MainWindow::qt_metacast(char const *)" (?qt_metacast at MainWindow@@UAEPAXPBD at Z) mainwindow.obj hello

Error 3 error LNK2001: unresolved external symbol "public: virtual int __thiscall MainWindow::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall at MainWindow@@UAEHW4Call at QMetaObject@@HPAPAX at Z) mainwindow.obj hello


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20100319/152ad424/attachment-0001.htm>


More information about the CMake mailing list