When using CMake instead of the Makefile for the Debian package build, the library is not installed in the multiarch subdirectory specified with CMAKE_INSTALL_LIBDIR:
cd obj-x86_64-linux-gnu && cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_SYSCONFDIR=/etc -DCMAKE_INSTALL_LOCALSTATEDIR=/var -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON -DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGIST
RY=ON "-GUnix Makefiles" -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu ..
-- The C compiler identification is GNU 10.2.1
-- The CXX compiler identification is GNU 10.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Protobuf: /usr/lib/x86_64-linux-gnu/libprotobuf.so;-lpthread (found version "3.12.3")
-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.11")
-- Found Threads: TRUE
-- Configuring done
-- Generating done
CMake Warning:
Manually-specified variables were not used by the project:
CMAKE_EXPORT_NO_PACKAGE_REGISTRY
CMAKE_INSTALL_LIBDIR
CMAKE_INSTALL_LOCALSTATEDIR
CMAKE_INSTALL_SYSCONFDIR
-- Build files have been written to: /build/osmpbf-1.4.0/obj-x86_64-linux-gnu
[...]
cd obj-x86_64-linux-gnu && make -j3 install DESTDIR=/build/osmpbf-1.4.0/debian/tmp AM_UPDATE_INFO_DIR=no PREFIX=/usr LIBDIR=/usr/lib/x86_64-linux-gnu
make[2]: Entering directory '/build/osmpbf-1.4.0/obj-x86_64-linux-gnu'
/usr/bin/cmake -S/build/osmpbf-1.4.0 -B/build/osmpbf-1.4.0/obj-x86_64-linux-gnu --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /build/osmpbf-1.4.0/obj-x86_64-linux-gnu/CMakeFiles /build/osmpbf-1.4.0/obj-x86_64-linux-gnu//CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make[3]: Entering directory '/build/osmpbf-1.4.0/obj-x86_64-linux-gnu'
make -f osmpbf/CMakeFiles/osmpbf_shared.dir/build.make osmpbf/CMakeFiles/osmpbf_shared.dir/depend
make -f osmpbf/CMakeFiles/osmpbf.dir/build.make osmpbf/CMakeFiles/osmpbf.dir/depend
make[4]: Entering directory '/build/osmpbf-1.4.0/obj-x86_64-linux-gnu'
cd /build/osmpbf-1.4.0/obj-x86_64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/osmpbf-1.4.0 /build/osmpbf-1.4.0/osmpbf /build/osmpbf-1.4.0/obj-x86_64-linux-gnu /build/osmpbf-1.4.0/obj-x86_64-linux-gnu/osmpbf /bui
ld/osmpbf-1.4.0/obj-x86_64-linux-gnu/osmpbf/CMakeFiles/osmpbf_shared.dir/DependInfo.cmake --color=
make[4]: Entering directory '/build/osmpbf-1.4.0/obj-x86_64-linux-gnu'
cd /build/osmpbf-1.4.0/obj-x86_64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/osmpbf-1.4.0 /build/osmpbf-1.4.0/osmpbf /build/osmpbf-1.4.0/obj-x86_64-linux-gnu /build/osmpbf-1.4.0/obj-x86_64-linux-gnu/osmpbf /build/osmpbf-1.4.0/obj-x86_64-linux-gnu/osmpbf/CMakeFiles/osmpbf.dir/DependInfo.cmake --color=
make[4]: Leaving directory '/build/osmpbf-1.4.0/obj-x86_64-linux-gnu'
make -f osmpbf/CMakeFiles/osmpbf_shared.dir/build.make osmpbf/CMakeFiles/osmpbf_shared.dir/build
make[4]: Leaving directory '/build/osmpbf-1.4.0/obj-x86_64-linux-gnu'
make -f osmpbf/CMakeFiles/osmpbf.dir/build.make osmpbf/CMakeFiles/osmpbf.dir/build
make[4]: Entering directory '/build/osmpbf-1.4.0/obj-x86_64-linux-gnu'
make[4]: Nothing to be done for 'osmpbf/CMakeFiles/osmpbf_shared.dir/build'.
make[4]: Leaving directory '/build/osmpbf-1.4.0/obj-x86_64-linux-gnu'
make[4]: Entering directory '/build/osmpbf-1.4.0/obj-x86_64-linux-gnu'
make[4]: Nothing to be done for 'osmpbf/CMakeFiles/osmpbf.dir/build'.
make[4]: Leaving directory '/build/osmpbf-1.4.0/obj-x86_64-linux-gnu'
[ 41%] Built target osmpbf_shared
[ 83%] Built target osmpbf
make -f tools/CMakeFiles/osmpbf-outline.dir/build.make tools/CMakeFiles/osmpbf-outline.dir/depend
make[4]: Entering directory '/build/osmpbf-1.4.0/obj-x86_64-linux-gnu'
cd /build/osmpbf-1.4.0/obj-x86_64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/osmpbf-1.4.0 /build/osmpbf-1.4.0/tools /build/osmpbf-1.4.0/obj-x86_64-linux-gnu /build/osmpbf-1.4.0/obj-x86_64-linux-gnu/tools /build/osmpbf-1.4.0/obj-x86_64-linux-gnu/tools/CMakeFiles/osmpbf-outline.dir/DependInfo.cmake --color=
make[4]: Leaving directory '/build/osmpbf-1.4.0/obj-x86_64-linux-gnu'
make -f tools/CMakeFiles/osmpbf-outline.dir/build.make tools/CMakeFiles/osmpbf-outline.dir/build
make[4]: Entering directory '/build/osmpbf-1.4.0/obj-x86_64-linux-gnu'
make[4]: Nothing to be done for 'tools/CMakeFiles/osmpbf-outline.dir/build'.
make[4]: Leaving directory '/build/osmpbf-1.4.0/obj-x86_64-linux-gnu'
[100%] Built target osmpbf-outline
make[3]: Leaving directory '/build/osmpbf-1.4.0/obj-x86_64-linux-gnu'
/usr/bin/cmake -E cmake_progress_start /build/osmpbf-1.4.0/obj-x86_64-linux-gnu/CMakeFiles 0
make -f CMakeFiles/Makefile2 preinstall
make[3]: Entering directory '/build/osmpbf-1.4.0/obj-x86_64-linux-gnu'
make[3]: Nothing to be done for 'preinstall'.
make[3]: Leaving directory '/build/osmpbf-1.4.0/obj-x86_64-linux-gnu'
Install the project...
/usr/bin/cmake -P cmake_install.cmake
-- Install configuration: "None"
-- Installing: /build/osmpbf-1.4.0/debian/tmp/usr/lib/libosmpbf.a
-- Installing: /build/osmpbf-1.4.0/debian/tmp/usr/lib/libosmpbf.so
-- Installing: /build/osmpbf-1.4.0/debian/tmp/usr/include/osmpbf/osmpbf.h
-- Installing: /build/osmpbf-1.4.0/debian/tmp/usr/include/osmpbf/osmformat.pb.h
-- Installing: /build/osmpbf-1.4.0/debian/tmp/usr/include/osmpbf/fileformat.pb.h
-- Installing: /build/osmpbf-1.4.0/debian/tmp/usr/bin/osmpbf-outline
-- Installing: /build/osmpbf-1.4.0/debian/tmp/usr/share/man/man1/osmpbf-outline.1
Hardcoding the destination for the install command is the cause of this:
install(TARGETS osmpbf LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
See also: https://cmake.org/cmake/help/v3.19/command/install.html#installing-targets
When using CMake instead of the Makefile for the Debian package build, the library is not installed in the multiarch subdirectory specified with
CMAKE_INSTALL_LIBDIR:Hardcoding the destination for the install command is the cause of this:
See also: https://cmake.org/cmake/help/v3.19/command/install.html#installing-targets