[CMake] Program with Qt opening with a bash screen on windows before showing the gui...

Michael Wild themiwi at gmail.com
Fri Dec 2 00:42:46 EST 2011


AFAIK you can simplify this if you always want to build a WIN32
executable on WIN32 and a MACOSX_BUNDLE on APPLE:

add_executable(myprogram WIN32 MACOSX_BUNDLE ${SOURCES})

Michael

On 12/01/2011 07:25 PM, Michael Jackson wrote:
> And in a cross platform environment you want to detect the system being compiled for and insert the proper keyword to "add_executable()".
> 
>     # Default GUI type is blank
>     set(GUI_TYPE "")
>     
>     #-- Configure the OS X Bundle Plist
>     if (APPLE)
>         SET(GUI_TYPE MACOSX_BUNDLE)
>     elseif(WIN32)
>         set(GUI_TYPE WIN32)
>     endif()
> 
> add_executable(myprogram ${GUI_TYPE} ${SOURCES})
> 
> Just for completeness.
> 
> If you search the CMake Wiki there is a complete working Qt example which has some of the deployment issues worked out also.
>
> On Dec 1, 2011, at 12:06 PM, Ben Medina wrote:
> 
>> Qt also provides qtmain.lib to resolve the need for WinMain, in case
>> you run into that linker error.
>>
>> On Wed, Nov 30, 2011 at 4:26 PM, David Cole <david.cole at kitware.com> wrote:
>>> On Wed, Nov 30, 2011 at 6:51 PM, Renato Utsch <renatoutsch at gmail.com> wrote:
>>>> Hello CMake guys...
>>>>
>>>> Well, I was writing a portable program using CMake that uses Qt as it's GUI
>>>> framework...
>>>>
>>>> I compiled it on linux and it worked really well, no problems. But when
>>>> compiling on Windows, the program opened a blank bash screen before opening
>>>> the proper gui. I thought that this could be with Qt itself, but when I
>>>> tried with qmake, the program runned normally, without any bash screen
>>>> opening...
>>>>
>>>> I used the Visual C++ Express 2008 to compile, with Qt libraries 4.7.4 for
>>>> the Visual 2008. Here is the CMakeLists.txt:
>>>>
>>>> project(test CXX)
>>>> cmake_minimum_required(VERSION 2.8)
>>>> find_package(Qt4 REQUIRED)
>>>> include(${QT_USE_FILE})
>>>> set(test_SRCS
>>>>     main.cpp
>>>>     MainWindow.cpp
>>>> )
>>>> set(test_MOC_SRCS
>>>>     MainWindow.hpp
>>>> )
>>>>
>>>> set(test_RCCS
>>>>     rc.qrc
>>>> )
>>>> qt4_wrap_cpp(test_MOCS ${test_MOC_SRCS})
>>>> qt4_add_resources(test_RCC_SRCS ${test_RCCS})
>>>> add_definitions(-DQT_NO_DEBUG)
>>>> add_executable(test
>>>>     ${test_SRCS}
>>>>     ${test_MOCS}
>>>>     ${test_RCC_SRCS})
>>>> target_link_libraries(test ${QT_LIBRARIES})
>>>>
>>>> If there is any solution to this I would be very grateful, because I really
>>>> want to use CMake.
>>>>
>>>>
>>>> Thanks!
>>>>
>>>>
>>>> Renato
>>>
>>> Add the WIN32 argument to add_executable to tell it it's a Windows app
>>> and not a console app.
>>>
>>> Like this:
>>>
>>> add_executable(test WIN32
>>>    ${test_SRCS}
>>>    ${test_MOCS}
>>>    ${test_RCC_SRCS})
>>>
>>>
>>> HTH,
>>> David




More information about the CMake mailing list