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

David Faure faure at kde.org
Thu Apr 3 00:45:34 CEST 2008


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.

-- 
David Faure, faure at kde.org, sponsored by Trolltech to work on KDE,
Konqueror (http://www.konqueror.org), and KOffice (http://www.koffice.org).


More information about the Kde-buildsystem mailing list