file(GLOB_RECURSE SOURCES *.cpp)
#SET(SOURCES flann.cpp util/Random.cpp nn/Testing.cpp algorithms/NNIndex.cpp algorithms/dist.cpp util/Logger.cpp util/Saving.cpp)
-ADD_LIBRARY(flann SHARED ${SOURCES})
-ADD_LIBRARY(flann_s STATIC ${SOURCES})
+ADD_LIBRARY(flann ${SOURCES})
+#ADD_LIBRARY(flann SHARED ${SOURCES}) #JL: Why the two versions??
+#ADD_LIBRARY(flann_s STATIC ${SOURCES})
IF(WIN32)
INSTALL (
ENDIF(WIN32)
INSTALL (
- TARGETS flann flann_s
+ TARGETS flann # flann_s
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
set(OPENCV_DEBUG_POSTFIX)\r
endif()\r
\r
+
+# ----------------------------------------------------------------------------\r
+# Build static or dynamic libs?
+# ----------------------------------------------------------------------------\r
+# Default: dynamic libraries:
+SET(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)")
+IF(BUILD_SHARED_LIBS)
+ SET(OPENCV_BUILD_SHARED_LIB 1) # For cvconfig.h, etc.
+ELSE(BUILD_SHARED_LIBS)
+ SET(OPENCV_BUILD_SHARED_LIB 0)
+ENDIF(BUILD_SHARED_LIBS)
\r
# ----------------------------------------------------------------------------\r
# Variables for cvconfig.h.cmake\r
set(CMAKE_OPENCV_GCC_VERSION ${CMAKE_OPENCV_GCC_VERSION_MAJOR}${CMAKE_OPENCV_GCC_VERSION_MINOR})\r
message(STATUS "Detected version of GNU GCC: ${CMAKE_OPENCV_GCC_VERSION}")\r
endif()\r
-\r
+
# ----------------------------------------------------------------------------\r
# CHECK FOR SYSTEM LIBRARIES, OPTIONS, ETC..\r
# ----------------------------------------------------------------------------\r
\r
set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -DNDEBUG")\r
set(EXTRA_C_FLAGS_DEBUG "${EXTRA_C_FLAGS_DEBUG} -O0 -DDEBUG -D_DEBUG")\r
+endif()
+
+# Extra link libs if the user selects building static libs:
+IF(NOT BUILD_SHARED_LIBS)
+ if(CMAKE_COMPILER_IS_GNUCXX)\r
+ set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} stdc++)
+ endif()\r
+
+ set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} flann zlib opencv_lapack)
endif()\r
\r
\r
\r
# Set CMAKE_INCLUDE_DIRS_CONFIGCMAKE to the list of include directories:\r
set(CMAKE_INCLUDE_DIRS_CONFIGCMAKE "\"${OPENCV_CONFIG_FILE_INCLUDE_DIR}\" \"${CMAKE_CURRENT_SOURCE_DIR}/include\" \"${CMAKE_CURRENT_SOURCE_DIR}/include/opencv\"")\r
-\r
+
set(CMAKE_LIB_DIRS_CONFIGCMAKE "${LIBRARY_OUTPUT_PATH}")\r
\r
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/OpenCVConfig.cmake" IMMEDIATE @ONLY)\r
message(STATUS "")\r
message(STATUS "General configuration for opencv ${OPENCV_VERSION} =====================================")\r
message(STATUS "")\r
+message(STATUS " Built as dynamic libs?: ${BUILD_SHARED_LIBS}")\r
message(STATUS " Compiler: ${CMAKE_COMPILER}")\r
message(STATUS " C++ flags (Release): ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}")\r
message(STATUS " C++ flags (Debug): ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}")\r
# Old CMake:\r
SET(OpenCV_LIBS ${OpenCV_LIBS} ${__CVLIB}@OPENCV_DLLVERSION@)\r
endif(CMAKE_MAJOR_VERSION GREATER 2 OR CMAKE_MINOR_VERSION GREATER 4)\r
-endforeach(__CVLIB)\r
+endforeach(__CVLIB)
+
+# For OpenCV built as static libs, we need the user to link against
+# many more dependencies:
+IF (NOT @OPENCV_BUILD_SHARED_LIB@)
+ # Under static libs, the user of OpenCV needs access to the 3rdparty libs as well:
+ LINK_DIRECTORIES("@CMAKE_BINARY_DIR@/3rdparty/lib")
+\r
+ SET(OpenCV_LIBS
+ @OPENCV_LINKER_LIBS@
+ @IPP_LIBS@
+ @JPEG_LIBRARIES@
+ @PNG_LIBRARIES@
+ @TIFF_LIBRARIES@
+ @JASPER_LIBRARIES@
+ @HIGHGUI_LIBRARIES@
+ ${OpenCV_LIBS}) # The standard libs BEFORE (OpenCV_LIBS) since these can have "debug","optimized".\r
+ENDIF(NOT @OPENCV_BUILD_SHARED_LIB@)
+
\r
# ======================================================\r
# Version variables: \r
/* Intel Integrated Performance Primitives */
#cmakedefine HAVE_IPP
+/* OpenCV compiled as static or dynamic libs */
+#cmakedefine OPENCV_BUILD_SHARED_LIB
+
/* Name of package */
#define PACKAGE "${PACKAGE}"
link_directories("${CMAKE_SOURCE_DIR}/3rdparty/lib")
set(the_target opencv_ffmpeg)
-add_library(${the_target} SHARED ffopencv.cpp ffopencv.h)
+add_library(${the_target} ffopencv.cpp ffopencv.h)
if (MSVC)
add_dependencies(${the_target} cxcore)
)
set(the_target "cvpy")
-add_library(${the_target} SHARED ${lib_srcs} ${lib_hdrs} ${lib_int_hdrs} ${CMAKE_CURRENT_BINARY_DIR}/generated0.i)
+add_library(${the_target} ${lib_srcs} ${lib_hdrs} ${lib_int_hdrs} ${CMAKE_CURRENT_BINARY_DIR}/generated0.i)
target_link_libraries(${the_target} ${PYTHON_LIBRARIES} cxcore cv cvaux highgui)
set_target_properties(${the_target} PROPERTIES PREFIX "")
set_target_properties(${the_target} PROPERTIES OUTPUT_NAME "cv")
\r
set(the_target "cv")\r
\r
-add_library(${the_target} SHARED ${lib_srcs} ${lib_hdrs} ${lib_int_hdrs})\r
+add_library(${the_target} ${lib_srcs} ${lib_hdrs} ${lib_int_hdrs})\r
\r
if(PCHSupport_FOUND)\r
set(pch_header ${CMAKE_CURRENT_SOURCE_DIR}/_cv.h)\r
# ----------------------------------------------------------------------------------
set(the_target "cvaux")
-add_library(${the_target} SHARED ${lib_srcs} ${lib_hdrs})
+add_library(${the_target} ${lib_srcs} ${lib_hdrs})
if(PCHSupport_FOUND)
set(pch_header ${CMAKE_CURRENT_SOURCE_DIR}/_cvaux.h)
\r
set(the_target "cxcore")\r
\r
-add_library(${the_target} SHARED ${lib_srcs} ${lib_hdrs} ${lib_int_hdrs})\r
+add_library(${the_target} ${lib_srcs} ${lib_hdrs} ${lib_int_hdrs})\r
\r
if(PCHSupport_FOUND)\r
set(pch_header ${CMAKE_CURRENT_SOURCE_DIR}/_cxcore.h)\r
"${CMAKE_CURRENT_SOURCE_DIR}"
"${CMAKE_CURRENT_BINARY_DIR}")
-add_library(${the_target} SHARED ${lib_srcs} ${highgui_hdrs} ${grfmt_hdrs} ${highgui_ext_hdrs})
+add_library(${the_target} ${lib_srcs} ${highgui_hdrs} ${grfmt_hdrs} ${highgui_ext_hdrs})
if(PCHSupport_FOUND)
set(pch_header ${CMAKE_CURRENT_SOURCE_DIR}/_highgui.h)
\r
set(the_target "ml")\r
\r
-add_library(${the_target} SHARED ${lib_srcs} ${lib_hdrs} ${lib_int_hdrs})\r
+add_library(${the_target} ${lib_srcs} ${lib_hdrs} ${lib_int_hdrs})\r
\r
if(PCHSupport_FOUND)\r
set(pch_header ${CMAKE_CURRENT_SOURCE_DIR}/_ml.h)\r
# ----------------------------------------------------------------------------------
set(the_target "cxts")
-add_library(${the_target} SHARED ${lib_srcs} ${lib_hdrs})
+add_library(${the_target} ${lib_srcs} ${lib_hdrs})
# For dynamic link numbering convenions
set_target_properties(${the_target} PROPERTIES