Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CMake build doesn't respect CMAKE_INSTALL_LIBDIR #54

Closed
sebastic opened this issue Jan 3, 2021 · 1 comment
Closed

CMake build doesn't respect CMAKE_INSTALL_LIBDIR #54

sebastic opened this issue Jan 3, 2021 · 1 comment

Comments

@sebastic
Copy link
Contributor

sebastic commented Jan 3, 2021

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

@joto
Copy link
Collaborator

joto commented Jan 3, 2021

I believe this has been fixed in PR #52.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants