[CMake] QTCreator project to VS2008 problems

Oli Glaser oli at glasers.org
Fri Mar 19 09:01:46 EDT 2010


----- Original Message ----- 
From: "John Drescher" <drescherjm at gmail.com>
To: "Oli Glaser" <oli at glasers.org>; "bacula-users" 
<Bacula-users at lists.sourceforge.net>
Sent: Friday, March 19, 2010 12:46 PM
Subject: Re: [CMake] QTCreator project to VS2008 problems


On Fri, Mar 19, 2010 at 5:58 AM, Oli Glaser <oli at glasers.org> wrote:
> 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
>
>

To me this is a problem with what gets run with moc.I am using Qt and
vs2008 every day so I can assure you that it works. Try adding the
header file to the auto moc. You should have the header files in the
source anyways.

See here for an example:

http://www.vtk.org/Wiki/VTK/Examples/Qt/RenderWindowUi


John

Hi John,

Thanks for the reply - I added mainwindow.h to the automoc but I get the 
same thing - I thought it might be the QMetaobject header or library it was 
looking for, looking at the the error messages, but I checked and the header 
is there, and the search paths are correct. I built the QTProject with a 
mingw compiled version of QTCreator - this wouldn't matter would it?

Oli



More information about the CMake mailing list