Fixes for path mangling feature
authorAndrey Kamaev <no@email>
Wed, 29 Jun 2011 06:27:08 +0000 (06:27 +0000)
committerAndrey Kamaev <no@email>
Wed, 29 Jun 2011 06:27:08 +0000 (06:27 +0000)
CMakeLists.txt
OpenCVConfig.cmake.in

index 84ad9d4..b445807 100644 (file)
@@ -8,11 +8,9 @@
 #   - OCT-2008: Initial version <joseluisblancoc@gmail.com>
 #
 # ----------------------------------------------------------------------------
-cmake_minimum_required(VERSION 2.4)
-project(OpenCV)
 
 set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
-set(OPENCV_INCLUDE_PREFIX include)
+
 # Add these standard paths to the search paths for FIND_LIBRARY
 # to find libraries from these locations first
 if(UNIX)
@@ -55,40 +53,8 @@ if(MSVC)
     set(CMAKE_USE_RELATIVE_PATHS ON CACHE INTERNAL "" FORCE)
 endif()
 
-# SUBDIRECTORIES:
-# Save libs and executables in the same place
-set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib CACHE PATH "Output directory for libraries" )
-set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin CACHE PATH "Output directory for applications" )
-
-if(ANDROID)
-    set(OPENCV_DOC_INSTALL_PATH doc)
-elseif(WIN32)
-    set(OPENCV_DOC_INSTALL_PATH doc)
-else()
-    set(OPENCV_DOC_INSTALL_PATH share/OpenCV/doc)
-endif()
-
-if(ANDROID)
-    set(OPENCV_LIB_INSTALL_PATH libs/${ARMEABI_NDK_NAME})
-else()
-    set(OPENCV_LIB_INSTALL_PATH lib)
-endif()
-
-set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${OPENCV_LIB_INSTALL_PATH}")
-set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
-
-# in case of cross compilation this macro will search packages
-# for host system instead of packages for target system
-if(NOT COMMAND find_host_package)
-    macro(find_host_package)
-        find_package(${ARGN})
-    endmacro()
-endif()
-if(NOT COMMAND find_host_program)
-    macro(find_host_program)
-        find_program(${ARGN})
-    endmacro()
-endif()
+cmake_minimum_required(VERSION 2.4)
+project(OpenCV)
 
 # --------------------------------------------------------------
 # Indicate CMake 2.7 and above that we don't want to mix relative
@@ -100,6 +66,12 @@ if(COMMAND cmake_policy)
 endif()
 
 # ----------------------------------------------------------------------------
+# Build static or dynamic libs?
+# Default: dynamic libraries
+# ----------------------------------------------------------------------------
+set(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)")
+
+# ----------------------------------------------------------------------------
 #  Current version number:
 # ----------------------------------------------------------------------------
 set(OPENCV_VERSION "2.3.1")
@@ -124,19 +96,52 @@ else()
 endif()
 
 #name mangling
-if(UNIX)
+set(OPENCV_INCLUDE_PREFIX include)
+if(UNIX AND NOT ANDROID AND BUILD_SHARED_LIBS)
     option(OPENCV_MANGLED_INSTALL_PATHS "Enables mangled install paths, that help with side by side installs" False)
     if(OPENCV_MANGLED_INSTALL_PATHS)
       set(OPENCV_INCLUDE_PREFIX include/opencv-${OPENCV_VERSION})
-      set(OPENCV_DOC_INSTALL_PATH share/OpenCV-${OPENCV_VERSION}/doc)
     endif()
 endif()
 
-# ----------------------------------------------------------------------------
-# Build static or dynamic libs?
-# Default: dynamic libraries
-# ----------------------------------------------------------------------------
-set(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)")
+# SUBDIRECTORIES:
+# Save libs and executables in the same place
+set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib CACHE PATH "Output directory for libraries" )
+set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin CACHE PATH "Output directory for applications" )
+
+if(ANDROID)
+    set(OPENCV_DOC_INSTALL_PATH doc)
+elseif(WIN32)
+    set(OPENCV_DOC_INSTALL_PATH doc)
+else()
+    if(OPENCV_MANGLED_INSTALL_PATHS)
+        set(OPENCV_DOC_INSTALL_PATH share/OpenCV-${OPENCV_VERSION}/doc)
+    else()
+        set(OPENCV_DOC_INSTALL_PATH share/OpenCV/doc)
+    endif()
+endif()
+
+if(ANDROID)
+    set(OPENCV_LIB_INSTALL_PATH libs/${ARMEABI_NDK_NAME})
+else()
+    set(OPENCV_LIB_INSTALL_PATH lib)
+endif()
+
+set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${OPENCV_LIB_INSTALL_PATH}")
+set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+
+# in case of cross compilation this macro will search packages
+# for host system instead of packages for target system
+if(NOT COMMAND find_host_package)
+    macro(find_host_package)
+        find_package(${ARGN})
+    endmacro()
+endif()
+if(NOT COMMAND find_host_program)
+    macro(find_host_program)
+        find_program(${ARGN})
+    endmacro()
+endif()
 
 # ----------------------------------------------------------------------------
 # Use statically or dynamically linked CRT?
@@ -1191,7 +1196,6 @@ if(UNIX)
     install(FILES "${CMAKE_BINARY_DIR}/unix-install/OpenCVConfig.cmake" DESTINATION share/OpenCV/)
     install(FILES ${CMAKE_BINARY_DIR}/unix-install/OpenCVConfig-version.cmake DESTINATION share/OpenCV/)
   endif()
-
 endif()
 
 if(ANDROID)
@@ -1266,7 +1270,7 @@ endif(ANDROID)
 #  The package name specified on the pkg-config command line is defined to
 #      be the name of the metadata file, minus the .pc extension. If a library
 #      can install multiple versions simultaneously, it must give each version
-#     its own name (for example, GTK 1.2 might have the package  name  "gtk+"
+#      its own name (for example, GTK 1.2 might have the package  name  "gtk+"
 #      while GTK 2.0 has "gtk+-2.0").
 #  Part 2/2: ${BIN_DIR}/unix-install/opencv.pc -> For use *with* "make install"
 # prefix=/usr
@@ -1277,8 +1281,8 @@ endif(ANDROID)
 set(prefix      ${CMAKE_INSTALL_PREFIX})
 set(exec_prefix "\${prefix}")
 set(libdir      "\${exec_prefix}/lib")
-set(includedir      "\${prefix}/${OPENCV_INCLUDE_PREFIX}")
-set(VERSION             ${OPENCV_VERSION})
+set(includedir  "\${prefix}/${OPENCV_INCLUDE_PREFIX}")
+set(VERSION     ${OPENCV_VERSION})
 
 set(OPENCV_PC_FILE_NAME "opencv.pc")
 #need to be explicit with naming the pc file and version number for side by side installs to work.
index d76556e..b347567 100644 (file)
 #                                      with this path is NOT needed.\r
 #      - OpenCV_INCLUDE_DIRS         : The OpenCV include directories.\r
 #      - OpenCV_COMPUTE_CAPABILITIES : The version of compute capability\r
-#      - OpenCV_VERSION              : The version of this OpenCV build. Example: "2.3.0"\r
-#      - OpenCV_VERSION_MAJOR        : Major version part of OpenCV_VERSION. Example: "2"\r
-#      - OpenCV_VERSION_MINOR        : Minor version part of OpenCV_VERSION. Example: "3"\r
-#      - OpenCV_VERSION_PATCH        : Patch version part of OpenCV_VERSION. Example: "0"\r
+#      - OpenCV_VERSION              : The version of this OpenCV build. Example: "@OPENCV_VERSION@"\r
+#      - OpenCV_VERSION_MAJOR        : Major version part of OpenCV_VERSION. Example: "@OPENCV_VERSION_MAJOR@"\r
+#      - OpenCV_VERSION_MINOR        : Minor version part of OpenCV_VERSION. Example: "@OPENCV_VERSION_MINOR@"\r
+#      - OpenCV_VERSION_PATCH        : Patch version part of OpenCV_VERSION. Example: "@OPENCV_VERSION_PATCH@"\r
 #\r
 #    Advanced variables:\r
 #      - OpenCV_SHARED\r
@@ -26,6 +26,7 @@
 #      - OpenCV_INSTALL_PATH\r
 #      - OpenCV_LIB_COMPONENTS\r
 #      - OpenCV_EXTRA_COMPONENTS\r
+#      - OpenCV_USE_MANGLED_PATHS\r
 #\r
 # =================================================================================================\r
 \r
@@ -38,6 +39,9 @@ SET(OpenCV_COMPUTE_CAPABILITIES @OpenCV_CUDA_CC@)
 # Some additional settings are required if OpenCV is built as static libs\r
 set(OpenCV_SHARED @BUILD_SHARED_LIBS@)\r
 \r
+# Enables mangled install paths, that help with side by side installs\r
+set(OpenCV_USE_MANGLED_PATHS @OPENCV_MANGLED_INSTALL_PATHS@)\r
+\r
 # Extract the directory where *this* file has been installed (determined at cmake run-time)\r
 get_filename_component(OpenCV_CONFIG_PATH "${CMAKE_CURRENT_LIST_FILE}" PATH)\r
 \r
@@ -71,7 +75,7 @@ ELSEIF(NOT OpenCV_SHARED)
     LIST(APPEND OpenCV_LIB_COMPONENTS opencv_androidcamera)\r
 endif()\r
 \r
-if(@OPENCV_MANGLED_INSTALL_PATHS@)\r
+if(OpenCV_USE_MANGLED_PATHS)\r
       #be explicit about the library names.\r
       set(OpenCV_LIB_COMPONENTS_ )\r
       foreach( CVLib ${OpenCV_LIB_COMPONENTS})\r
@@ -118,7 +122,7 @@ IF (NOT OpenCV_SHARED)
     set(OpenCV_LIBS @OPENCV_LINKER_LIBS@ @IPP_LIBS@ @HIGHGUI_LIBRARIES@ ${OpenCV_LIBS})\r
     set(OpenCV_EXTRA_COMPONENTS @JPEG_LIBRARIES@ @PNG_LIBRARIES@ @TIFF_LIBRARIES@ @JASPER_LIBRARIES@ @ZLIB_LIBRARY@)\r
 \r
-    if (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} VERSION_GREATER 2.4)\r
+    if (WIN32 AND ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} VERSION_GREATER 2.4)\r
         # Modern CMake:\r
         foreach(__EXTRA_LIB ${OpenCV_EXTRA_COMPONENTS})\r
             set(OpenCV_LIBS ${OpenCV_LIBS}\r