Rob,
Your cmake snippet is basically what I do in my build.
Idc is the problem. This gives the " Timers can only be used with threads 
started with QThread" error.
After some more playing around, I noticed something. If I place a breakpoint in 
the beginning of my main, I got the following stacktrace (build with cmake, 
without IDL commands):
    0    main                 main.cpp    44     0x81ea7
    1    __tmainCRTStartup    crtexe.c    536    0xafad9
    2    mainCRTStartup       crtexe.c    377    0xafc1d
    3    BaseThreadInitThunk  kernel32           0x76f8336a
    4    __RtlUserThreadStart ntdll              0x77979f72
    5    _RtlUserThreadStart  ntdll              0x77979f45
If I do the same with something I build with qmake (which does the IDL commands 
for you), I got:
    0    main                 main.cpp           252    0x1002ad6
    1    WinMain              qaxservermain.cpp  260    0x101bdb1
    2    __tmainCRTStartup    crtexe.c           528    0x102fb62
    3    WinMainCRTStartup    crtexe.c           377    0x102f92d
    4    BaseThreadInitThunk  kernel32                  0x76f8336a
    5    __RtlUserThreadStart ntdll                     0x77979f72
    6    _RtlUserThreadStart  ntdll                     0x77979f45
(Note that the main.cpp in the two stacktraces are two different files, so 
don't mind the difference in line numbers in main.cpp)
As you can see, in the activeqt server, build with qmake, the main is called 
from WinMain in qaxservermain.cpp. I don't know if this is the result of the 
IDL commands (in which case, the cmake build obviously does not have the 
WinMain in the stacktrace) or this should also be in the stacktrace of the 
cmake build, even before running the IDL commands?
Thanks,
Daniel


-----Original Message-----
From: Robert Knight [mailto:robertkni...@gmail.com]
Sent: woensdag 12 februari 2014 16:48
To: Fricot, Daniel
Cc: development@qt-project.org
Subject: Re: [Development] ActiveQt AxServer with CMake

> Has anyone managed to create an ActiveQt server with CMake?

To clarify, is the problem with running the IDC/IDL tools or some other step? 
The CMake logic we've used for this is roughly:

set(IDL_COMMANDS
  COMMAND idl ${BINARY_PATH} -idl ${BINARY_PATH}.idl
  COMMAND midl ${BINARY_PATH}.idl ${BINARY_PATH}.tlb
  COMMAND idc ${BINARY_PATH} -tlb ${BINARY_PATH}.tlb)

add_custom_command(TARGET ${SERVER_TARGET} POST_BUILD ${IDL_COMMANDS}
  COMMENT "Generating and embedding type library")

Where ${SERVER_TARGET} is the name of the executable target that is the ActiveX 
server and ${BINARY_PATH} is set to '$<TARGET_FILE:SERVER_TARGET>' - CMake 
automatically expands that to the .exe path at build time.
So the target is built as normal and then idl/idc is run as a post-build step 
whenever the target is rebuilt.

Regards,
Rob.

On 12 February 2014 14:24, Fricot, Daniel 
<daniel.fri...@barco.com<mailto:daniel.fri...@barco.com>> wrote:
> Hi,
>
> Has anyone managed to create an ActiveQt server with CMake? I got it
> working with qmake but we need to do this with CMake. I also tried idc
> manually after CMake but then I keep getting the error:
>
> QObject::startTimer: Timers can only be used with threads started with
> QThread
>
> IDL generation failed trying to run program myapp.exe!
>
> Thanks,
>
> Daniel
>
> This message is subject to the following terms and conditions: MAIL
> DISCLAIMER
>
> _______________________________________________
> Development mailing list
> Development@qt-project.org<mailto:Development@qt-project.org>
> http://lists.qt-project.org/mailman/listinfo/development
>

This message is subject to the following terms and conditions: MAIL 
DISCLAIMER<http://www.barco.com/en/maildisclaimer>
_______________________________________________
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to