trinity-devel@lists.pearsoncomputing.net

Message: previous - next
Month: March 2012

Re: [trinity-devel] CMake - how to add library to build?

From: Serghei Amelian <serghei@...>
Date: Fri, 9 Mar 2012 10:08:22 +0200
On Friday 09 March 2012 03:34:36 Darrell Anderson wrote:
[...]

> > > But this is dirty hack, because the build will fail if
> >
> > devel package of Xext is not installed.
>
> Would a more proper solution be to test the value of the internal cmake
> variable HAVE_X11_EXTENSIONS_SHAPE_H and when true add the link? Something
> like this:
>
> tde_add_executable( ksnapshot AUTOMOC
>   SOURCES
>     ksnapshotiface.skel main.cpp ksnapshot.cpp regiongrabber.cpp
>     windowgrabber.cpp ksnapshotwidget.ui
>     if( HAVE_X11_EXTENSIONS_SHAPE_H )
>       LINK tdeprint-shared Xext
>     else
>       LINK tdeprint-shared
>     endif( )
>   DESTINATION ${BIN_INSTALL_DIR}
> )

Nope, you can't insert a condition inside a function.

The correct way is this (in this case we are using pkgconfig information):

if( WITH_XEXT )
  pkg_search_module( XEXT xext )
  if( NOT XEXT_FOUND )
    tde_message_fatal( "You requested Xext support, but is was not found on 
your system (or devel package is not installed' )
  endif( )
  check_include_file( "X11/extensions/shape.h" HAVE_X11_EXTENSIONS_SHAPE_H )
endif( )

tde_add_executable( ksnapshot AUTOMOC
  SOURCES
    ksnapshotiface.skel main.cpp ksnapshot.cpp regiongrabber.cpp
    windowgrabber.cpp ksnapshotwidget.ui
  LINK kdeprint-shared ${XEXT_LIBRARIES}
  DESTINATION ${BIN_INSTALL_DIR}
)

-- 
Serghei