Skip to content

Commit

Permalink
Locating libconfig from CMake-based projects
Browse files Browse the repository at this point in the history
Configuration files for CMake are provided to simplify
locating libconfig from within project that use CMake
as their build system.
Separate configuration files are provided for C and C++
builds.

In a CMakeLists.txt file, use the following commands to
locate libconfig:

- To locate the library, use either
    find_package(libconfig)
  or
    find_package(libconfig++)

- The include directories are available as variables
    LIBCONFIG_INCLUDE_DIRS
  and
    LIBCONFIG++_INCLUDE_DIRS
  respectively, and can be used like this:
    include_directories(${LIBCONFIG++_INCLUDE_DIRS})

- Link to libconfig using variables
    LIBCONFIG_LIBRARIES
  and
    LIBCONFIG++_LIBRARIES
  respectively, by writing:
    target_link_libraries(${PROJECT_NAME}
      ${LIBCONFIG++_LIBRARIES}
    )
  • Loading branch information
thfi committed Oct 14, 2015
1 parent 4ac539a commit 8aa02d6
Show file tree
Hide file tree
Showing 10 changed files with 116 additions and 19 deletions.
7 changes: 7 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
2015-10-14 Thomas Fischer <[email protected]>

* configure, configure.ac, debian/libconfig++9-dev.install,
debian/libconfig9-dev.install, lib/Makefile.am, lib/Makefile.in,
lib/libconfig++Config.cmake.in, lib/libconfigConfig.cmake.in,
libconfig.spec.in - locating libconfig in CMake-based projects

2015-08-14 Mark Lindner <markl@neuromancer>

* lib/wincompat.h - Fixed Windows portability issue
Expand Down
4 changes: 3 additions & 1 deletion configure
Original file line number Diff line number Diff line change
Expand Up @@ -16896,7 +16896,7 @@ fi



ac_config_files="$ac_config_files Makefile lib/Makefile lib/libconfig.pc lib/libconfig++.pc doc/Makefile examples/Makefile examples/c/Makefile examples/c++/Makefile tinytest/Makefile tests/Makefile libconfig.spec"
ac_config_files="$ac_config_files Makefile lib/Makefile lib/libconfig.pc lib/libconfig++.pc lib/libconfigConfig.cmake lib/libconfig++Config.cmake doc/Makefile examples/Makefile examples/c/Makefile examples/c++/Makefile tinytest/Makefile tests/Makefile libconfig.spec"

cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
Expand Down Expand Up @@ -18027,6 +18027,8 @@ do
"lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;;
"lib/libconfig.pc") CONFIG_FILES="$CONFIG_FILES lib/libconfig.pc" ;;
"lib/libconfig++.pc") CONFIG_FILES="$CONFIG_FILES lib/libconfig++.pc" ;;
"lib/libconfigConfig.cmake") CONFIG_FILES="$CONFIG_FILES lib/libconfigConfig.cmake" ;;
"lib/libconfig++Config.cmake") CONFIG_FILES="$CONFIG_FILES lib/libconfig++Config.cmake" ;;
"doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
"examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
"examples/c/Makefile") CONFIG_FILES="$CONFIG_FILES examples/c/Makefile" ;;
Expand Down
2 changes: 2 additions & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,8 @@ AC_OUTPUT(
lib/Makefile
lib/libconfig.pc
lib/libconfig++.pc
lib/libconfigConfig.cmake
lib/libconfig++Config.cmake
doc/Makefile
examples/Makefile
examples/c/Makefile
Expand Down
1 change: 1 addition & 0 deletions debian/libconfig++9-dev.install
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ debian/tmp/usr/lib/libconfig++.a
debian/tmp/usr/lib/libconfig++.so
debian/tmp/usr/lib/libconfig++.la
debian/tmp/usr/lib/pkgconfig/libconfig++.pc
debian/tmp/usr/lib/cmake/libconfig++/libconfig++Config.cmake
1 change: 1 addition & 0 deletions debian/libconfig9-dev.install
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ debian/tmp/usr/lib/libconfig.a
debian/tmp/usr/lib/libconfig.so
debian/tmp/usr/lib/libconfig.la
debian/tmp/usr/lib/pkgconfig/libconfig.pc
debian/tmp/usr/lib/cmake/libconfig/libconfigConfig.cmake
8 changes: 8 additions & 0 deletions lib/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -78,3 +78,11 @@ pkgconfig_DATA = libconfig.pc
if BUILDCXX
pkgconfig_DATA += libconfig++.pc
endif

cmakedir = $(libdir)/cmake/libconfig
cmake_DATA = libconfigConfig.cmake

if BUILDCXX
cmakeppdir = $(libdir)/cmake/libconfig++
cmakepp_DATA = libconfig++Config.cmake
endif
94 changes: 76 additions & 18 deletions lib/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,9 @@ subdir = lib
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(top_srcdir)/aux-build/mkinstalldirs \
$(srcdir)/libconfig.pc.in $(srcdir)/libconfig++.pc.in \
scanner.c grammar.h grammar.c $(top_srcdir)/aux-build/depcomp \
$(srcdir)/libconfigConfig.cmake.in \
$(srcdir)/libconfig++Config.cmake.in scanner.c grammar.h \
grammar.c $(top_srcdir)/aux-build/depcomp \
$(top_srcdir)/aux-build/ylwrap $(am__include_HEADERS_DIST)
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
Expand All @@ -101,7 +103,8 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/aux-build/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/ac_config.h
CONFIG_CLEAN_FILES = libconfig.pc libconfig++.pc
CONFIG_CLEAN_FILES = libconfig.pc libconfig++.pc libconfigConfig.cmake \
libconfig++Config.cmake
CONFIG_CLEAN_VPATH_FILES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
Expand Down Expand Up @@ -130,7 +133,8 @@ am__uninstall_files_from_dir = { \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" \
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cmakedir)" \
"$(DESTDIR)$(cmakeppdir)" "$(DESTDIR)$(pkgconfigdir)" \
"$(DESTDIR)$(includedir)"
LTLIBRARIES = $(lib_LTLIBRARIES)
libconfig___la_LIBADD =
Expand Down Expand Up @@ -234,7 +238,7 @@ am__can_run_installinfo = \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
DATA = $(pkgconfig_DATA)
DATA = $(cmake_DATA) $(cmakepp_DATA) $(pkgconfig_DATA)
am__include_HEADERS_DIST = libconfig.h libconfig.h++
HEADERS = $(include_HEADERS)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
Expand Down Expand Up @@ -433,6 +437,10 @@ EXTRA_DIST = \

pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libconfig.pc $(am__append_5)
cmakedir = $(libdir)/cmake/libconfig
cmake_DATA = libconfigConfig.cmake
@BUILDCXX_TRUE@cmakeppdir = $(libdir)/cmake/libconfig++
@BUILDCXX_TRUE@cmakepp_DATA = libconfig++Config.cmake
all: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) all-am

Expand Down Expand Up @@ -472,6 +480,10 @@ libconfig.pc: $(top_builddir)/config.status $(srcdir)/libconfig.pc.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
libconfig++.pc: $(top_builddir)/config.status $(srcdir)/libconfig++.pc.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
libconfigConfig.cmake: $(top_builddir)/config.status $(srcdir)/libconfigConfig.cmake.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
libconfig++Config.cmake: $(top_builddir)/config.status $(srcdir)/libconfig++Config.cmake.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@

install-libLTLIBRARIES: $(lib_LTLIBRARIES)
@$(NORMAL_INSTALL)
Expand Down Expand Up @@ -665,6 +677,48 @@ mostlyclean-libtool:

clean-libtool:
-rm -rf .libs _libs
install-cmakeDATA: $(cmake_DATA)
@$(NORMAL_INSTALL)
@list='$(cmake_DATA)'; test -n "$(cmakedir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(cmakedir)'"; \
$(MKDIR_P) "$(DESTDIR)$(cmakedir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(cmakedir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(cmakedir)" || exit $$?; \
done

uninstall-cmakeDATA:
@$(NORMAL_UNINSTALL)
@list='$(cmake_DATA)'; test -n "$(cmakedir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(cmakedir)'; $(am__uninstall_files_from_dir)
install-cmakeppDATA: $(cmakepp_DATA)
@$(NORMAL_INSTALL)
@list='$(cmakepp_DATA)'; test -n "$(cmakeppdir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(cmakeppdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(cmakeppdir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(cmakeppdir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(cmakeppdir)" || exit $$?; \
done

uninstall-cmakeppDATA:
@$(NORMAL_UNINSTALL)
@list='$(cmakepp_DATA)'; test -n "$(cmakeppdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(cmakeppdir)'; $(am__uninstall_files_from_dir)
install-pkgconfigDATA: $(pkgconfig_DATA)
@$(NORMAL_INSTALL)
@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
Expand Down Expand Up @@ -795,7 +849,7 @@ check: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) check-am
all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS)
installdirs:
for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"; do \
for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cmakedir)" "$(DESTDIR)$(cmakeppdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: $(BUILT_SOURCES)
Expand Down Expand Up @@ -856,7 +910,8 @@ info: info-am

info-am:

install-data-am: install-includeHEADERS install-pkgconfigDATA
install-data-am: install-cmakeDATA install-cmakeppDATA \
install-includeHEADERS install-pkgconfigDATA

install-dvi: install-dvi-am

Expand Down Expand Up @@ -902,7 +957,8 @@ ps: ps-am

ps-am:

uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES \
uninstall-am: uninstall-cmakeDATA uninstall-cmakeppDATA \
uninstall-includeHEADERS uninstall-libLTLIBRARIES \
uninstall-pkgconfigDATA

.MAKE: all check install install-am install-strip
Expand All @@ -911,17 +967,19 @@ uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES \
clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
ctags-am distclean distclean-compile distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am \
install-includeHEADERS install-info install-info-am \
install-libLTLIBRARIES install-man install-pdf install-pdf-am \
install-pkgconfigDATA install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am uninstall-includeHEADERS \
uninstall-libLTLIBRARIES uninstall-pkgconfigDATA
html-am info info-am install install-am install-cmakeDATA \
install-cmakeppDATA install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-includeHEADERS install-info \
install-info-am install-libLTLIBRARIES install-man install-pdf \
install-pdf-am install-pkgconfigDATA install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
uninstall-cmakeDATA uninstall-cmakeppDATA \
uninstall-includeHEADERS uninstall-libLTLIBRARIES \
uninstall-pkgconfigDATA


# Tell versions [3.59,3.63) of GNU make to not export all variables.
Expand Down
7 changes: 7 additions & 0 deletions lib/libconfig++Config.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
set(LIBCONFIG++_FOUND 1)
set(LIBCONFIG++_VERSION "1.5")
set(LIBCONFIG++_LIBRARIES "config++")
set(LIBCONFIG++_LIBRARY_DIRS "@libdir@")
set(LIBCONFIG++_LDFLAGS "")
set(LIBCONFIG++_INCLUDE_DIRS "@includedir@")
set(LIBCONFIG++_CFLAGS "")
7 changes: 7 additions & 0 deletions lib/libconfigConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
set(LIBCONFIG_FOUND 1)
set(LIBCONFIG_VERSION "1.5")
set(LIBCONFIG_LIBRARIES "config")
set(LIBCONFIG_LIBRARY_DIRS "@libdir@")
set(LIBCONFIG_LDFLAGS "")
set(LIBCONFIG_INCLUDE_DIRS "@includedir@")
set(LIBCONFIG_CFLAGS "")
4 changes: 4 additions & 0 deletions libconfig.spec.in
Original file line number Diff line number Diff line change
Expand Up @@ -65,12 +65,16 @@ ldconfig
%{_infodir}
%{_includedir}
%{_libdir}/pkgconfig
%{_libdir}/cmake/libconfig
%{_libdir}/cmake/libconfig++
%{_libdir}/%{name}.a
%{_libdir}/%{name}.la
%{_libdir}/%{name}++.a
%{_libdir}/%{name}++.la

%changelog
* Wed Oct 14 2015 Thomas Fischer <[email protected]> 1.5
- added library directory cmake/libconfig and cmake/libconfig++
* Wed Aug 19 2007 Deneys S. Maartens <[email protected]> 1.1.3-1
- create spec file

Expand Down

0 comments on commit 8aa02d6

Please sign in to comment.