[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    Re: CMake and ksysguardd
From:       Alexander Neundorf <neundorf () kde ! org>
Date:       2009-09-30 19:52:26
Message-ID: 200909302152.26723.neundorf () kde ! org
[Download RAW message or body]

On Wednesday 30 September 2009, John Tapsell wrote:
> 2009/9/29 Pau Garcia i Quiles <pgquiles@elpauer.org>:
> ..
>
> >>   Could anyone that knows CMake help me with this :)
> >
> > It is not difficult to make it compile without KDE. The attached patch
> > fixes and/or ignores the issues I pointed above.
>
> It looks good.  How does this interact now with when people compile
> kdebase? You still want "make install"  for example to install ksysguardd.
> It's not important for "make install" to work if you run that just
> inside the ksysguardd directory, if that helps.
>
> > We could use an #ifdef or alike to be able to build ksysguardd with
> > KDE (using config-workspace, etc) and without KDE (ignoring it). Would
> > that be interesting for you ?
>
> I don't know - is it important to use config-workspace?

Go through the #defines in that file and find out which one(s) is/are used by 
ksysguardd.
Then maybe do the same check in ksysguardd/CMakeLists.txt and put the result 
into config-ksysguardd.h.

At the top of ksysguardd/CMakeLists.txt you could do:

if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
   # if we get here, ksysguard is built independent from the rest of kdebase
   include(ksysguardd-separate.cmake)
endif("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")

and put everything you need into this ksysguardd-separate.cmake (or how you 
want to call it) file.
Which could be more or less:

-----------8<---------------8<---------------8<---------
# Set INSTALL_TARGETS_DEFAULT_ARGS to something useful:
set(INSTALL_TARGETS_DEFAULT_ARGS  RUNTIME DESTINATION bin
                                  LIBRARY DESTINATION lib
                                  ARCHIVE DESTINATION lib)

####### copied from kdelibs/cmake/modules/KDE4Defaults.cmake:

# Always include srcdir and builddir in include path
# This saves typing ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} in 
about every subdir
# since cmake 2.4.0
set(CMAKE_INCLUDE_CURRENT_DIR ON)

# put the include dirs which are in the source or build tree
# before all other include dirs, so the headers in the sources
# are prefered over the already installed ones
# since cmake 2.4.1
set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON)

######### copy the contents of the three macros here:

macro(MACRO_BOOL_TO_01 ...)
...
endmacro(...)
...

######### and you may put a simplistic kde4_add_library() here too:

macro(KDE4_ADD_LIBRARY)
   add_library(${ARGN})
endmacro(KDE4_ADD_LIBRARY)


This way you will have only minor changes to the CMakeLists.txt, and all the 
things necessary to make it build separately are contained in just one file.

Alex
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic