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

Ralf Habacker ralf.habacker at freenet.de
Thu Apr 3 16:30:21 CEST 2008


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. This is not possible for example in the 
following cmake code for kwrite

----------------------------------------------------------------------------------
set(kwrite_KDEINIT_SRCS kwritemain.cpp)

kde4_add_kdeinit_executable(kwrite ${kwrite_KDEINIT_SRCS})

target_link_libraries(kdeinit_kwrite ${KDE4_KTEXTEDITOR_LIBS} 
${KDE4_KIO_LIBS})

install(TARGETS kdeinit_kwrite DESTINATION ${INSTALL_TARGETS_DEFAULT_ARGS})

target_link_libraries(kwrite kdeinit_kwrite)

install(TARGETS kwrite DESTINATION ${BIN_INSTALL_DIR})
install(FILES kwrite.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
install(FILES kwriteui.rc DESTINATION ${DATA_INSTALL_DIR}/kwrite)
----------------------------------------------------------------------------------

the proposed macros would do this stuff

kde4_add_app_icon(kwrite_SRCS "hi*-app-kwrite.png")
kde4_add_kdeinit_executable(kwrite ${kwrite_SRCS} )
kde4_target_link_library(kwrite ${KDE4_KTEXTEDITOR_LIBS} ${KDE4_KIO_LIBS})
kde4_install(TARGETS kwrite DESTINATION ${BIN_INSTALL_DIR})



Regards
 Ralf



More information about the Kde-buildsystem mailing list