[mlpack-git] master: When creating list of libraries, filter duplicates and use -L correctly. (316d4b0)

gitdub at mlpack.org gitdub at mlpack.org
Wed Oct 5 10:59:42 EDT 2016


Repository : https://github.com/mlpack/mlpack
On branch  : master
Link       : https://github.com/mlpack/mlpack/compare/81be55c2fe8ff2ba2b329d48706a940c30b39e3e...316d4b002e7fb514afab1138e496e2b87e43e52d

>---------------------------------------------------------------

commit 316d4b002e7fb514afab1138e496e2b87e43e52d
Author: Ryan Curtin <ryan at ratml.org>
Date:   Wed Oct 5 10:58:42 2016 -0400

    When creating list of libraries, filter duplicates and use -L correctly.


>---------------------------------------------------------------

316d4b002e7fb514afab1138e496e2b87e43e52d
 CMakeLists.txt | 30 +++++++++++++++++++++++++-----
 1 file changed, 25 insertions(+), 5 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 09e54ae..a34771b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -518,21 +518,41 @@ if (PKG_CONFIG_FOUND)
       "${MLPACK_INCLUDE_DIRS_STRING} -I${CMAKE_INSTALL_PREFIX}/include/")
 
   # Create the list of link directories.
+  set(MLPACK_LIBRARIES_LIST)
   foreach (linkdir ${MLPACK_LIBRARY_DIRS})
-    set(MLPACK_LIBRARIES_STRING "${MLPACK_LIBRARIES_STRING} -L${linkdir}")
+    list(APPEND MLPACK_LIBRARIES_LIST "-L${linkdir}")
   endforeach ()
 
   foreach(lib ${MLPACK_LIBRARIES})
     string(SUBSTRING "${lib}" 0 1 first)
     if ("${first}" STREQUAL "/")
-      set(MLPACK_LIBRARIES_STRING "${MLPACK_LIBRARIES_STRING} -L${lib}")
+      # We need to split the directory and the library.
+      string(REGEX REPLACE "(.*/)[^/]*$" "\\1" library_dir "${lib}")
+      string(REGEX REPLACE ".*/lib([^/]*).so.*$" "\\1" library_name "${lib}")
+
+      list(APPEND MLPACK_LIBRARIES_LIST "-L${library_dir}")
+      list(APPEND MLPACK_LIBRARIES_LIST "-l${library_name}")
     else ()
-      set(MLPACK_LIBRARIES_STRING "${MLPACK_LIBRARIES_STRING} -l${lib}")
+      list(APPEND MLPACK_LIBRARIES_LIST "-l${lib}")
     endif ()
   endforeach ()
   # Don't forget to add mlpack as a dependency too.
-  set(MLPACK_LIBRARIES_STRING
-      "${MLPACK_LIBRARIES_STRING} -L${CMAKE_INSTALL_PREFIX}/lib/ -lmlpack")
+  list(APPEND MLPACK_LIBRARIES_LIST "-L${CMAKE_INSTALL_PREFIX}/lib/")
+  list(APPEND MLPACK_LIBRARIES_LIST "-lmlpack")
+
+  # Filter duplicate dependencies and directories.
+  list(REMOVE_DUPLICATES MLPACK_LIBRARIES_LIST)
+
+  # Filter out known unnecessary directories.
+  list(REMOVE_ITEM MLPACK_LIBRARIES_LIST
+      "-L/usr/lib"
+      "-L/usr/lib/"
+      "-L/usr/lib/x86_64-linux-gnu"
+      "-L/usr/lib/x86_64-linux-gnu/"
+      "-L/usr/lib/i386-linux-gnu"
+      "-L/usr/lib/i386-linux-gnu/")
+
+  string(REPLACE ";" " " MLPACK_LIBRARIES_STRING "${MLPACK_LIBRARIES_LIST}")
 
   # Do first stage of configuration.
   set(MLPACK_VERSION_STRING "@MLPACK_VERSION_STRING@")




More information about the mlpack-git mailing list