[CMake] Using pkg-config

Maik Beckmann maikbeckmann at gmx.de
Tue Dec 19 02:20:36 EST 2006


Am Dienstag, den 19.12.2006, 02:12 +0100 schrieb Marko Anastasov:
> Hello,
> 
> I'm new to CMake. I'm trying to write a CMakeLists.txt file to
> build a simple gtkmm test program (should work with any though).
> I can build and run it, but I need to fix something.
> 
> Here's the main part:
> 
> EXEC_PROGRAM(pkg-config ARGS --cflags --libs gtkmm-2.4
>              OUTPUT_VARIABLE GTKMM_PKG_FLAGS)
> SET(GTKMM_PKG_FLAGS "${GTKMM_PKG_FLAGS}" CACHE STRING "GTKMM Flags")
> SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GTKMM_PKG_FLAGS}")
> 
> add_executable(example ${SOURCES})
> 
> target_link_libraries(example ${GTKMM_PKG_FLAGS})

A new autoconf-style pkg-config module has been uploaded to CVS:
http://public.kitware.com/cgi-bin/viewcvs.cgi/Modules/FindPkgConfig.cmake?cvsroot=CMake&rev=1.1&content-type=text/x-cvsweb-markup

You can copy it to your project folder, say into a folder named
cmake-extensions and use it like follows:
<CMakeLists.txt>
project(test)

set(CMAKE_MODULE_PATH  ${PROJECT_SOURCE_DIR}/cmake-extensions/ )
find_package(PkgConfig)

pkg_check_modules(GTKMM gtkmm-2.4)

link_directories(
    ${GTKMM_LIBRARY_DIRS}
)
include_directories(
    ${GTKMM_INCLUDE_DIRS}
)

add_executable(test_exe main.cpp)
target_link_libraries(test_exe
    ${GTKMM_LIBRARIES}
)
</ CMakeLists.txt>


Note: If you change the package names at pkg_check_modules you have to
delete CMakeCache.txt at your build folder, otherwise it won't take
effect.

Regards, 
Maik




More information about the CMake mailing list