Zitat von Murray Cumming <murr...@murrayc.com>:
pkg_search_module() defines SOMEPREFIX_LIBRARY_DIRS among other things,
as mentioned here
http://public.kitware.com/cgi-bin/viewcvs.cgi/Modules/FindPkgConfig.cmake?root=CMake&view=markup
(better than the documentation at
http://www.itk.org/Wiki/CMake:How_To_Find_Libraries
)
But how can I use those directories so my executable can actually be
linked against the SOMEPREFIX_LIBRARIES libraries that I've specified to
target_link_libraries().
I usually use a foreach() with the list of FOO_LIBRARIES to search
with find_library(), using FOO_LIBRARY_DIRS as HINTS. Then you have
one bar_LIBRARY for each library 'bar' which contains the full path.
These variables can then be easily used for target_link_libraries():
------------------snip(untested)----------------
pkg_check_modules(FOO_PC foo);
if(FOO_PC_FOUND)
foreach(foolib ${FOO_PC_LIBRARIES})
find_package(${foolib}_LIBRARY
NAMES ${foolib}
HINTS ${FOO_PC_LIBRARY_DIRS}
)
if (${${foolib}_LIBRARY})
list(APPEND FOO_LIBRARIES ${${foolib}_LIBRARY})
endif (${${foolib}_LIBRARY})
endforeach(foolib)
include_directories(${FOO_PC_INCLUDE_DIRS})
endif(FOO_PC_FOUND)
add_libary(bar ${BAR_SOURCES})
target_link_libraries(bar baz ${FOO_LIBRARIES})
#add other properties for CFLAGS and LDFLAGS
------------------snip----------------
It is still nice to also handle the case that neither pkg-config nor
the .pc file are present (or cannot be found).
If you need that often, just write a small wrapper macro.
Actually, I would much rather just tell the build system to use
SOMEPREFIX_LDFLAGS instead of dealing with the directories and libraries
separately. That's what I do with autoconf/automake.
autotools only support GNU-like toolchains. Using the CFLAGS and
LDFLAGS from .pc files is not always possible, while defines, include
directories and library names (including their locations) may be
usuable.
Also, if I use several libraries, do I need separate pkg_search_module()
calls, and therefore several sets of variables? I'd much rather just
give a list of libraries and get one set of CFLAGS and LDFLAGS. Again,
that's what I do with autoconf/automake.
Read the documentation you already pointed at yourself and use
pkg_check_modules().
Have fun
HS
_______________________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake