[Kde-bindings] building qyoto on Windows

Peter Amstutz peter.amstutz at tseboston.com
Tue Feb 14 16:05:29 UTC 2012


Hello all,

I am trying to build Qyoto on Windows.  I understand that this is 
working for some people, but the process isn't quite flawless.  Here are 
my experiences so far:

Doing a 32 bit build with Visual Studio 2008 on Windows 7 (x64).  I am 
using Qt 2.7.4 on the assumption that it would be better supported than 
Qt 2.8.0 which was only released last week.  I built Qt myself from the 
open source release.

Building Smokegen went smoothly.  I had to set CMAKE_INSTALL_PREFIX 
manually in order to install smokegen to a target directory.

Building SmokeQt has been more difficult.  The first problem I had was 
in having it find Smoke; this was resolved by installing smoke to a 
separate directory.  It turns out you cannot build SmokeQt against the 
Smoke build tree; only the installed tree.

The second problem was the following error:

Entering E:/Development/smokeqt/qtcore
CMake Error at qtcore/QtGuess.txt:139 (list):
list sub-command REMOVE_ITEM requires two or more arguments.
Call Stack (most recent call first):
qtcore/CMakeLists.txt:14 (include)

The error at qtcore/QtGuess.txt:139 is this:
   list(REMOVE_ITEM test_targets ${qtdefines_output})
this can be fixed:
   list(REMOVE_ITEM test_targets "${qtdefines_output}")

This produces an empty string instead of no string.

This underlying problem is that ${qtdefines_output} is empty.  This 
variable is empty because the qtdefine test program produces no output.  
It produces no output because there are no printf() lines are present in 
qtdefine.cpp. There are no printf() lines because ${qtheaders} is 
expected to contain #define lines, but does not.  It does not contain 
any #define lines because ${QT_QTCORE_INCLUDE_DIR}/qglobal.h simply 
#includes "../../src/corelib/global/qglobal.h" rather than being the 
"real" qglobal file which the current code expects to find.  Confused yet?

I'm not sure if qtdefine actually affects anything, as the script then 
proceeds to test directly for #defines for the features it cares about.  
I think this part of the build script could use some attention from 
someone who knows more about what it is going on.

Finally I am able to run the configuration step without any fatal 
errors, and generate correct solution files.  Everything builds except 
smokeqttest with the following error.  Is smokeqttest an essential project?

1>------ Build started: Project: smokeqttest, Configuration: Release 
Win32 ------
1>Linking...
1>   Creating library 
E:\Development\smokeqt\build\qttest\Release\smokeqttest.lib and object 
E:\Development\smokeqt\build\qttest\Release\smokeqttest.exp
1>x_1.obj : error LNK2019: unresolved external symbol "public: static 
struct QMetaObject const QTestEventLoop::staticMetaObject" 
(?staticMetaObject at QTestEventLoop@@2UQMetaObject@@B) referenced in 
function "public: static class QString __cdecl QTestEventLoop::tr(char 
const *,char const *)" (?tr at QTestEventLoop@@SA?AVQString@@PBD0 at Z)
1>E:\Development\smokeqt\build\qttest\Release\smokeqttest.dll : fatal 
error LNK1120: 1 unresolved externals
1>Build log was saved at 
"file://e:\Development\smokeqt\build\qttest\smokeqttest.dir\Release\BuildLog.htm"
1>smokeqttest - 2 error(s), 0 warning(s)

Assuming smokeqttest is not essential, my next step will be to try to 
build qyoto.

-- 
Peter Amstutz
Senior Software Engineer
Technology Solutions Experts
Natick, MA
02131



More information about the Kde-bindings mailing list