Ludovic Courtès writes: > 宋文武 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? libftdi (not using GNUInstallDirs.cmake) handle this itself by set LIB_SUFFIX, look like we have to set it specifically. > > 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 , > LIBRARY_OUTPUT_PATH might be better for this, no? no, this is for build phase. > >> 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? yes, but now I find out that they can under both lib/cmake and share/cmake. > > 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?= > 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 thanks for the patch, I have apply it, but it does not work. because libqtxdg have qtxdg-config.cmake in $out/share/cmake/qt5xdg. after add CMAKE_PREFIX_PATH with: (search-path-specification (variable "CMAKE_PREFIX_PATH") (directories '(""))) I could get liblxqt(use libqtxdg) build ok. and by setting CMAKE_PREFIX_PATH, I think we can get rid of CMAKE_PROGRAM_PATH, CMAKE_INCLUDE_PATH, and maybe CMAKE_LIBRARY_PATH. see: http://www.cmake.org/cmake/help/v3.0/variable/CMAKE_PREFIX_PATH.html. > > >> I find this when packaging https://github.com/lxdg/libqtxdg. > > It’s 404. oh, sorry, it's https://github.com/lxde/libqtxdg and here is the packages I'm working on: