[cmake-developers] Using cmake pkg-config-like in non-cmake builds

Clinton Stimpson clinton at elemtech.com
Mon Nov 22 16:10:36 EST 2010


On Monday, November 22, 2010 01:55:22 pm Alexander Neundorf wrote:
> Hi,
> 
> there can be the case that a package which has been built with cmake,
> should be used in a project which doesn't use cmake.
> There is a feature request that cmake should help with generating
> pkg-config pc-files: http://public.kitware.com/Bug/view.php?id=11446
> 
> I don't like that idea, because a) this means duplicating information, and
> b) doing that in a less powerful format.
> 
> I have a slightly different idea: instead of having cmake generate
> pc-files, modify/extend cmake so that it can be used similar to pkg-config
> by projects which don't use cmake as their buildsystem.
> I attached a first very quick try to that bug report.
> It's a small cmake script which can be executed by cmake with -P, and which
> basically contains one find_package() call and prints the results, so they
> can be fed into a compiler invocation in a makefile.
> 
> It already somewhat works:
> $ cmake -DMODE=COMPILE -DCOMPILER_ID=GNU -DPACKAGE=PNG -P
> cmake-config.cmake -I/usr/include -I/usr/include
> 
>  $ cmake -DMODE=LINK -DCOMPILER_ID=GNU -DPACKAGE=PNG -P cmake-config.cmake
>  /usr/lib/libpng.so /usr/lib/libz.so
> 
> 
> Do you think this makes sense ?
> 
> Current issues:
> * the output goes to stderr instead stdout
> * the output has line breaks
> * actual problem: currently it's not possible to use commands which deal
> with targets in script-mode (I disabled that in 2007 since at least back
> then it didn't make sense). This means that find-modules which use
> try_compile() internally fail, and also those which create imported
> targets.
> 
> Do you think it is worth to put some effort into this ?
> 

How does this work when find_package() doesn't automatically find the package?
The caller provides a CMAKE_MODULE_PATH or something?

Clint



More information about the cmake-developers mailing list