宋文武 <iyzs...@gmail.com> skribis: > if CMAKE_INSTALL_LIBDIR not set to `lib`, GNUInstallDirs.cmake will install > libraries files to $out/lib64.
I found several CMake-built libraries on x86_64 (graphite2, openjpeg, qjson) that all use lib/, not lib64/. Then I found one counterexample, libftdi; however, setting CMAKE_INSTALL_LIBDIR=lib doesn’t make any different: it still installs libraries in $out/lib64. Any idea? Here’s the patch I tried:
diff --git a/guix/build/cmake-build-system.scm b/guix/build/cmake-build-system.scm index 74b4f01..b1598dd 100644 --- a/guix/build/cmake-build-system.scm +++ b/guix/build/cmake-build-system.scm @@ -53,6 +53,8 @@ build-type)) '()) ,(string-append "-DCMAKE_INSTALL_PREFIX=" out) + ;; Install libraries to $prefix/lib, not $prefix/lib64. + "-DCMAKE_INSTALL_LIBDIR=lib" ;; add input libraries to rpath "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE" ;; add (other) libraries of the project itself to rpath
According to <http://www.cmake.org/Wiki/CMake_Useful_Variables>, LIBRARY_OUTPUT_PATH might be better for this, no? > if CMAKE_PREFIX_PATH not set to PATH of `inputs`, cmake will unable to > find cmake modules of inputs. You’re talking about .cmake files, right? Could you try the attached patch and report back?
>From 536c143997fa146dc77d6e8defc24032452e5a4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <l...@gnu.org> Date: Sun, 2 Nov 2014 23:54:28 +0100 Subject: [PATCH] gnu: cmake: Add search paths for CMAKE_{INCLUDE,LIBRARY,MODULE}_PATH. * gnu/packages/cmake.scm (cmake)[native-search-paths]: New field. * guix/build/cmake-build-system.scm (configure): Remove 'setenv' calls for "CMAKE_LIBRARY_PATH" and "CMAKE_INCLUDE_PATH". --- gnu/packages/cmake.scm | 19 +++++++++++++++++++ guix/build/cmake-build-system.scm | 2 -- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm index 63805ef..e0349be 100644 --- a/gnu/packages/cmake.scm +++ b/gnu/packages/cmake.scm @@ -100,6 +100,25 @@ ("expat" ,expat) ("bzip2" ,bzip2) ("libarchive" ,libarchive))) + + (native-search-paths + (list + ;; Search path used by the 'FIND_XXX' functions. + (search-path-specification + (variable "CMAKE_PROGRAM_PATH") + (directories '("bin"))) + (search-path-specification + (variable "CMAKE_INCLUDE_PATH") + (directories '("include"))) + (search-path-specification + (variable "CMAKE_LIBRARY_PATH") + (directories '("lib" "lib64"))) + + ;; Search path used by 'FIND_PACKAGE' and 'INCLUDE'. + (search-path-specification + (variable "CMAKE_MODULE_PATH") + (directories '("lib/cmake"))))) + (home-page "http://www.cmake.org/") (synopsis "Cross-platform build system") (description diff --git a/guix/build/cmake-build-system.scm b/guix/build/cmake-build-system.scm index b1598dd..766797e 100644 --- a/guix/build/cmake-build-system.scm +++ b/guix/build/cmake-build-system.scm @@ -60,8 +60,6 @@ ;; add (other) libraries of the project itself to rpath ,(string-append "-DCMAKE_INSTALL_RPATH=" out "/lib") ,@configure-flags))) - (setenv "CMAKE_LIBRARY_PATH" (getenv "LIBRARY_PATH")) - (setenv "CMAKE_INCLUDE_PATH" (getenv "CPATH")) (format #t "running 'cmake' with arguments ~s~%" args) (zero? (apply system* "cmake" args))))) -- 2.1.2
> I find this when packaging https://github.com/lxdg/libqtxdg. It’s 404. Thanks, Ludo’.