skipping the kdeinit magic on windows (Re: KDE/kdebase/apps/konqueror)

Alexander Neundorf neundorf at kde.org
Thu Apr 3 22:05:35 CEST 2008


On Thursday 03 April 2008, Ralf Habacker wrote:
> David Faure schrieb:
> > On Thursday 03 April 2008, Ralf Habacker wrote:
> >> David Faure schrieb:
> >>> On Wednesday 02 April 2008, Ralf Habacker wrote:
> >>>> SVN commit 793038 by habacker:
> >>>>
> >>>> kdeinit modules are not supported on win32
> >>>>
> >>>>  M  +10 -6     client/CMakeLists.txt
> >>>>  M  +11 -5     src/CMakeLists.txt
> >>>>
> >>>>
> >>>> --- trunk/KDE/kdebase/apps/konqueror/client/CMakeLists.txt
> >>>> #793037:793038 @@ -10,13 +10,17 @@
> >>>>
> >>>>  kde4_add_app_icon(kfmclient_SRCS
> >>>> "${KDE4_ICON_INSTALL_DIR}/oxygen/*/apps/system-file-manager.png")
> >>>>
> >>>> -kde4_add_kdeinit_executable( kfmclient NOGUI ${kfmclient_SRCS})
> >>>> +if (WIN32)
> >>>> +    add_definitions(-Dkdemain=main)
> >>>> +    kde4_add_executable(kfmclient ${kfmclient_SRCS})
> >>>> +    target_link_libraries(kfmclient  ${KDE4_KIO_LIBS} )
> >>>> +else (WIN32)
> >>>> +    kde4_add_kdeinit_executable( kfmclient NOGUI ${kfmclient_SRCS})
> >>>> +    target_link_libraries(kdeinit_kfmclient  ${KDE4_KIO_LIBS} )
> >>>> +    install(TARGETS kdeinit_kfmclient  DESTINATION
> >>>> ${INSTALL_TARGETS_DEFAULT_ARGS} ) +    target_link_libraries(
> >>>> kfmclient kdeinit_kfmclient )
> >>>> +endif (WIN32)
> >>>
> >>> Ouch. But we define kdeinit modules everywhere in the source code.
> >>> Maintaining CMakeLists.txt files like this one is going to be horrible.
> >>>
> >>> How about making kde4_add_kdeinit_executable do what's right for
> >>> Windows, i.e. creating a static lib kdeinit_foo with -Dkdemain-main,
> >>> and then the normal stuff from the CMakeLists.txt will work:
> >>>
> >>> target_link_libraries(kdeinit_kfmclient  ${KDE4_KIO_LIBS} )
> >>> install(TARGETS kdeinit_kfmclient  DESTINATION
> >>> ${INSTALL_TARGETS_DEFAULT_ARGS} )
> >>
> >> You are aware that you then install an obsolate static library ?
> >
> > Ah, indeed.
> >
> >>> target_link_libraries( kfmclient kdeinit_kfmclient )
> >>>
> >>> (I think/hope that the dependencies of the static lib are used for the
> >>> binary)
> >>
> >> would it not be possible to have something like the following
> >>
> >> kde4_add_kdeinit_executable(kfmclient  ... )
> >> kde4_target_link_library(kfmclient  ... )
> >> kde4_install(TARGETS kfmclient ... )
> >>
> >> which would make it possible to hide all the internal platform depending
> >> stuff into those cmake macros.
> >
> > I agree. But this is Alex's call really -> moving discussion to
> > kde-buildsystem.
>
> There are more problems with the current implementation  When I try to
> add an application icon it is required to have access to the end
> application source variable. 

What's the problem if you use the resource file just for the static library ?
Is it discarded or is it something else ?
Could we do something in the configured kwrite_dummy.cpp so that this doesn't 
happen ?

Alex


More information about the Kde-buildsystem mailing list