[CMake] SET_TARGET_PROPERTIES funny..

Thomas Hunger hto at arcor.de
Fri Aug 18 13:18:01 EDT 2006


Ok, just for documentary purposes:

> error in my macro, but I think it would be better to catch it in
> SET_TARGET_PROPERTIES. What do you think?

I learned from Brad King that SET_TARGET_PROPERTIES is low level, 
so PKGCONFIG has to check for ill-formed pkg-config output itself. 

Here is the complete macro which will add the link and cflags to your 
target (tested on unix). 

Usage: PKGCONFIG(target packagename)

FIND_PROGRAM(PKGCONFIG_EXECUTABLE NAMES pkg-config 
PATHS /usr/local/bin )

MACRO(PKGCONFIG _target _package)
    EXECUTE_PROCESS(COMMAND ${PKGCONFIG_EXECUTABLE}
                    --exists ${_package} 
                    RESULT_VARIABLE _ok
                    OUTPUT_QUIET)
    IF (NOT ${_ok} EQUAL 0)
        MESSAGE(FATAL_ERROR "No pkg-config configuration file found 
for package ${_package}")
    ENDIF (NOT ${_ok} EQUAL 0)

    EXECUTE_PROCESS(COMMAND ${PKGCONFIG_EXECUTABLE} 
                 ${_package} --libs 
                 OUTPUT_VARIABLE _libs)
    STRING(REPLACE "\n" "" _libs ${_libs})
    EXECUTE_PROCESS(COMMAND ${PKGCONFIG_EXECUTABLE} 
                 ${_package} --cflags 
                 OUTPUT_VARIABLE _cflags)
    STRING(REPLACE "\n" "" _cflags ${_cflags})
    SET_TARGET_PROPERTIES(${_target} PROPERTIES 
                          LINK_FLAGS ${_libs} 
                          COMPILE_FLAGS ${_cflags})
ENDMACRO(PKGCONFIG)


More information about the CMake mailing list