Skip to content

Commit c6c6512

Browse files
committed
cmake: refactoring of OpenCVConfig
- removed OpenCV_LIB_DIR* vars (they are broken and not required anymore) - OpenCVConfig.cmake doesn't contain ANDROID/CUDA code if there is no such support - removed OpenCV2_INCLUDE_DIRS_CONFIGCMAKE, merged into OpenCV_INCLUDE_DIRS_CONFIGCMAKE - fix hard-coded relative paths for OpenCV_INSTALL_PATH - removed OpenCV_TBB_ARCH - switch OpenCVConfig.cmake into 2-level mode for Android SDK
1 parent 7188e6e commit c6c6512

10 files changed

+315
-414
lines changed

CMakeLists.txt

Lines changed: 69 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,10 @@ if (POLICY CMP0042)
8686
cmake_policy(SET CMP0042 OLD)
8787
endif()
8888

89+
include(cmake/OpenCVUtils.cmake)
90+
8991
# must go before the project command
90-
set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Configs" FORCE)
92+
ocv_update(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Configs" FORCE)
9193
if(DEFINED CMAKE_BUILD_TYPE)
9294
set_property( CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${CMAKE_CONFIGURATION_TYPES} )
9395
endif()
@@ -100,8 +102,6 @@ if(MSVC)
100102
set(CMAKE_USE_RELATIVE_PATHS ON CACHE INTERNAL "" FORCE)
101103
endif()
102104

103-
include(cmake/OpenCVUtils.cmake)
104-
105105
ocv_cmake_eval(DEBUG_PRE ONCE)
106106

107107
ocv_clear_vars(OpenCVModules_TARGETS)
@@ -304,50 +304,50 @@ include(cmake/OpenCVVersion.cmake)
304304
# ----------------------------------------------------------------------------
305305

306306
# Save libs and executables in the same place
307-
set(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/bin" CACHE PATH "Output directory for applications" )
307+
set(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/bin" CACHE PATH "Output directory for applications")
308308

309-
if (ANDROID)
310-
if (ANDROID_ABI MATCHES "NEON")
309+
if(ANDROID)
310+
if(ANDROID_ABI MATCHES "NEON")
311311
set(ENABLE_NEON ON)
312312
endif()
313-
if (ANDROID_ABI MATCHES "VFPV3")
313+
if(ANDROID_ABI MATCHES "VFPV3")
314314
set(ENABLE_VFPV3 ON)
315315
endif()
316316
endif()
317317

318318
if(ANDROID OR WIN32)
319-
set(OPENCV_DOC_INSTALL_PATH doc)
319+
ocv_update(OPENCV_DOC_INSTALL_PATH doc)
320320
else()
321-
set(OPENCV_DOC_INSTALL_PATH share/OpenCV/doc)
321+
ocv_update(OPENCV_DOC_INSTALL_PATH share/OpenCV/doc)
322322
endif()
323323

324324
if(WIN32 AND CMAKE_HOST_SYSTEM_NAME MATCHES Windows)
325325
if(DEFINED OpenCV_RUNTIME AND DEFINED OpenCV_ARCH)
326-
set(OpenCV_INSTALL_BINARIES_PREFIX "${OpenCV_ARCH}/${OpenCV_RUNTIME}/")
326+
ocv_update(OpenCV_INSTALL_BINARIES_PREFIX "${OpenCV_ARCH}/${OpenCV_RUNTIME}/")
327327
else()
328328
message(STATUS "Can't detect runtime and/or arch")
329-
set(OpenCV_INSTALL_BINARIES_PREFIX "")
329+
ocv_update(OpenCV_INSTALL_BINARIES_PREFIX "")
330330
endif()
331331
elseif(ANDROID)
332-
set(OpenCV_INSTALL_BINARIES_PREFIX "sdk/native/")
332+
ocv_update(OpenCV_INSTALL_BINARIES_PREFIX "sdk/native/")
333333
else()
334-
set(OpenCV_INSTALL_BINARIES_PREFIX "")
334+
ocv_update(OpenCV_INSTALL_BINARIES_PREFIX "")
335335
endif()
336336

337337
if(ANDROID)
338-
set(OPENCV_SAMPLES_BIN_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}samples/${ANDROID_NDK_ABI_NAME}")
338+
ocv_update(OPENCV_SAMPLES_BIN_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}samples/${ANDROID_NDK_ABI_NAME}")
339339
else()
340-
set(OPENCV_SAMPLES_BIN_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}samples")
340+
ocv_update(OPENCV_SAMPLES_BIN_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}samples")
341341
endif()
342342

343343
if(ANDROID)
344-
set(OPENCV_BIN_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}bin/${ANDROID_NDK_ABI_NAME}")
344+
ocv_update(OPENCV_BIN_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}bin/${ANDROID_NDK_ABI_NAME}")
345345
else()
346-
set(OPENCV_BIN_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}bin")
346+
ocv_update(OPENCV_BIN_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}bin")
347347
endif()
348348

349349
if(NOT OPENCV_TEST_INSTALL_PATH)
350-
set(OPENCV_TEST_INSTALL_PATH "${OPENCV_BIN_INSTALL_PATH}")
350+
ocv_update(OPENCV_TEST_INSTALL_PATH "${OPENCV_BIN_INSTALL_PATH}")
351351
endif()
352352

353353
if (OPENCV_TEST_DATA_PATH)
@@ -356,66 +356,74 @@ endif()
356356

357357
if(OPENCV_TEST_DATA_PATH AND NOT OPENCV_TEST_DATA_INSTALL_PATH)
358358
if(ANDROID)
359-
set(OPENCV_TEST_DATA_INSTALL_PATH "sdk/etc/testdata")
359+
ocv_update(OPENCV_TEST_DATA_INSTALL_PATH "sdk/etc/testdata")
360360
elseif(WIN32)
361-
set(OPENCV_TEST_DATA_INSTALL_PATH "testdata")
361+
ocv_update(OPENCV_TEST_DATA_INSTALL_PATH "testdata")
362362
else()
363-
set(OPENCV_TEST_DATA_INSTALL_PATH "share/OpenCV/testdata")
363+
ocv_update(OPENCV_TEST_DATA_INSTALL_PATH "share/OpenCV/testdata")
364364
endif()
365365
endif()
366366

367367
if(ANDROID)
368-
set(LIBRARY_OUTPUT_PATH "${OpenCV_BINARY_DIR}/lib/${ANDROID_NDK_ABI_NAME}")
369-
set(3P_LIBRARY_OUTPUT_PATH "${OpenCV_BINARY_DIR}/3rdparty/lib/${ANDROID_NDK_ABI_NAME}")
370-
set(OPENCV_LIB_INSTALL_PATH sdk/native/libs/${ANDROID_NDK_ABI_NAME})
371-
set(OPENCV_3P_LIB_INSTALL_PATH sdk/native/3rdparty/libs/${ANDROID_NDK_ABI_NAME})
372-
set(OPENCV_CONFIG_INSTALL_PATH sdk/native/jni)
373-
set(OPENCV_INCLUDE_INSTALL_PATH sdk/native/jni/include)
374-
set(OPENCV_SAMPLES_SRC_INSTALL_PATH samples/native)
375-
set(OPENCV_OTHER_INSTALL_PATH sdk/etc)
368+
set(LIBRARY_OUTPUT_PATH "${OpenCV_BINARY_DIR}/lib/${ANDROID_NDK_ABI_NAME}")
369+
ocv_update(3P_LIBRARY_OUTPUT_PATH "${OpenCV_BINARY_DIR}/3rdparty/lib/${ANDROID_NDK_ABI_NAME}")
370+
ocv_update(OPENCV_LIB_INSTALL_PATH sdk/native/libs/${ANDROID_NDK_ABI_NAME})
371+
ocv_update(OPENCV_3P_LIB_INSTALL_PATH sdk/native/3rdparty/libs/${ANDROID_NDK_ABI_NAME})
372+
ocv_update(OPENCV_CONFIG_INSTALL_PATH sdk/native/jni)
373+
ocv_update(OPENCV_INCLUDE_INSTALL_PATH sdk/native/jni/include)
374+
ocv_update(OPENCV_SAMPLES_SRC_INSTALL_PATH samples/native)
375+
ocv_update(OPENCV_OTHER_INSTALL_PATH sdk/etc)
376376
else()
377-
set(LIBRARY_OUTPUT_PATH "${OpenCV_BINARY_DIR}/lib")
378-
set(3P_LIBRARY_OUTPUT_PATH "${OpenCV_BINARY_DIR}/3rdparty/lib${LIB_SUFFIX}")
377+
set(LIBRARY_OUTPUT_PATH "${OpenCV_BINARY_DIR}/lib")
378+
ocv_update(3P_LIBRARY_OUTPUT_PATH "${OpenCV_BINARY_DIR}/3rdparty/lib${LIB_SUFFIX}")
379379

380380
if(WIN32 AND CMAKE_HOST_SYSTEM_NAME MATCHES Windows)
381381
if(OpenCV_STATIC)
382-
set(OPENCV_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}staticlib${LIB_SUFFIX}")
382+
ocv_update(OPENCV_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}staticlib${LIB_SUFFIX}")
383383
else()
384-
set(OPENCV_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}lib${LIB_SUFFIX}")
384+
ocv_update(OPENCV_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}lib${LIB_SUFFIX}")
385385
endif()
386-
set(OPENCV_3P_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}staticlib${LIB_SUFFIX}")
387-
set(OPENCV_SAMPLES_SRC_INSTALL_PATH samples/native)
388-
set(OPENCV_JAR_INSTALL_PATH java)
389-
set(OPENCV_OTHER_INSTALL_PATH etc)
386+
ocv_update(OPENCV_3P_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}staticlib${LIB_SUFFIX}")
387+
ocv_update(OPENCV_SAMPLES_SRC_INSTALL_PATH samples/native)
388+
ocv_update(OPENCV_JAR_INSTALL_PATH java)
389+
ocv_update(OPENCV_OTHER_INSTALL_PATH etc)
390+
ocv_update(OPENCV_CONFIG_INSTALL_PATH "")
390391
else()
391-
set(OPENCV_LIB_INSTALL_PATH lib${LIB_SUFFIX})
392-
set(OPENCV_3P_LIB_INSTALL_PATH share/OpenCV/3rdparty/${OPENCV_LIB_INSTALL_PATH})
393-
set(OPENCV_SAMPLES_SRC_INSTALL_PATH share/OpenCV/samples)
394-
set(OPENCV_JAR_INSTALL_PATH share/OpenCV/java)
395-
set(OPENCV_OTHER_INSTALL_PATH share/OpenCV)
396-
endif()
397-
set(OPENCV_INCLUDE_INSTALL_PATH "include")
398-
399-
math(EXPR SIZEOF_VOID_P_BITS "8 * ${CMAKE_SIZEOF_VOID_P}")
400-
if(LIB_SUFFIX AND NOT SIZEOF_VOID_P_BITS EQUAL LIB_SUFFIX)
401-
set(OPENCV_CONFIG_INSTALL_PATH lib${LIB_SUFFIX}/cmake/opencv)
402-
else()
403-
set(OPENCV_CONFIG_INSTALL_PATH share/OpenCV)
392+
ocv_update(OPENCV_LIB_INSTALL_PATH lib${LIB_SUFFIX})
393+
ocv_update(OPENCV_3P_LIB_INSTALL_PATH share/OpenCV/3rdparty/${OPENCV_LIB_INSTALL_PATH})
394+
ocv_update(OPENCV_SAMPLES_SRC_INSTALL_PATH share/OpenCV/samples)
395+
ocv_update(OPENCV_JAR_INSTALL_PATH share/OpenCV/java)
396+
ocv_update(OPENCV_OTHER_INSTALL_PATH share/OpenCV)
397+
398+
if(NOT DEFINED OPENCV_CONFIG_INSTALL_PATH)
399+
math(EXPR SIZEOF_VOID_P_BITS "8 * ${CMAKE_SIZEOF_VOID_P}")
400+
if(LIB_SUFFIX AND NOT SIZEOF_VOID_P_BITS EQUAL LIB_SUFFIX)
401+
ocv_update(OPENCV_CONFIG_INSTALL_PATH lib${LIB_SUFFIX}/cmake/opencv)
402+
else()
403+
ocv_update(OPENCV_CONFIG_INSTALL_PATH share/OpenCV)
404+
endif()
405+
endif()
404406
endif()
407+
ocv_update(OPENCV_INCLUDE_INSTALL_PATH "include")
405408
endif()
406409

407-
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${OPENCV_LIB_INSTALL_PATH}")
410+
ocv_update(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${OPENCV_LIB_INSTALL_PATH}")
408411
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
409412

410413
if(INSTALL_TO_MANGLED_PATHS)
411414
set(OPENCV_INCLUDE_INSTALL_PATH ${OPENCV_INCLUDE_INSTALL_PATH}/opencv-${OPENCV_VERSION})
412-
string(REPLACE "OpenCV" "OpenCV-${OPENCV_VERSION}" OPENCV_3P_LIB_INSTALL_PATH "${OPENCV_3P_LIB_INSTALL_PATH}")
413-
string(REPLACE "OpenCV" "OpenCV-${OPENCV_VERSION}" OPENCV_SAMPLES_SRC_INSTALL_PATH "${OPENCV_SAMPLES_SRC_INSTALL_PATH}")
414-
string(REPLACE "OpenCV" "OpenCV-${OPENCV_VERSION}" OPENCV_CONFIG_INSTALL_PATH "${OPENCV_CONFIG_INSTALL_PATH}")
415-
string(REPLACE "OpenCV" "OpenCV-${OPENCV_VERSION}" OPENCV_DOC_INSTALL_PATH "${OPENCV_DOC_INSTALL_PATH}")
416-
string(REPLACE "OpenCV" "OpenCV-${OPENCV_VERSION}" OPENCV_JAR_INSTALL_PATH "${OPENCV_JAR_INSTALL_PATH}")
417-
string(REPLACE "OpenCV" "OpenCV-${OPENCV_VERSION}" OPENCV_TEST_DATA_INSTALL_PATH "${OPENCV_TEST_DATA_INSTALL_PATH}")
418-
string(REPLACE "OpenCV" "OpenCV-${OPENCV_VERSION}" OPENCV_OTHER_INSTALL_PATH "${OPENCV_OTHER_INSTALL_PATH}")
415+
foreach(v
416+
OPENCV_3P_LIB_INSTALL_PATH
417+
OPENCV_SAMPLES_SRC_INSTALL_PATH
418+
OPENCV_CONFIG_INSTALL_PATH
419+
OPENCV_DOC_INSTALL_PATH
420+
OPENCV_JAR_INSTALL_PATH
421+
OPENCV_TEST_DATA_INSTALL_PATH
422+
OPENCV_OTHER_INSTALL_PATH
423+
)
424+
string(REPLACE "OpenCV" "OpenCV-${OPENCV_VERSION}" ${v} "${${v}}")
425+
string(REPLACE "opencv" "opencv-${OPENCV_VERSION}" ${v} "${${v}}")
426+
endforeach()
419427
endif()
420428

421429

@@ -440,7 +448,7 @@ endif()
440448
# ----------------------------------------------------------------------------
441449
# Path for build/platform -specific headers
442450
# ----------------------------------------------------------------------------
443-
set(OPENCV_CONFIG_FILE_INCLUDE_DIR "${CMAKE_BINARY_DIR}/" CACHE PATH "Where to create the platform-dependant cvconfig.h")
451+
ocv_update(OPENCV_CONFIG_FILE_INCLUDE_DIR "${CMAKE_BINARY_DIR}/" CACHE PATH "Where to create the platform-dependant cvconfig.h")
444452
ocv_include_directories(${OPENCV_CONFIG_FILE_INCLUDE_DIR})
445453

446454
# ----------------------------------------------------------------------------
@@ -453,7 +461,7 @@ set(OPENCV_EXTRA_MODULES_PATH "" CACHE PATH "Where to look for additional OpenCV
453461
# ----------------------------------------------------------------------------
454462
find_host_package(Git QUIET)
455463

456-
if(GIT_FOUND)
464+
if(NOT DEFINED OPENCV_VCSVERSION AND GIT_FOUND)
457465
execute_process(COMMAND "${GIT_EXECUTABLE}" describe --tags --always --dirty --match "[0-9].[0-9].[0-9]*"
458466
WORKING_DIRECTORY "${OpenCV_SOURCE_DIR}"
459467
OUTPUT_VARIABLE OPENCV_VCSVERSION
@@ -464,7 +472,7 @@ if(GIT_FOUND)
464472
if(NOT GIT_RESULT EQUAL 0)
465473
set(OPENCV_VCSVERSION "unknown")
466474
endif()
467-
else()
475+
elseif(NOT DEFINED OPENCV_VCSVERSION)
468476
# We don't have git:
469477
set(OPENCV_VCSVERSION "unknown")
470478
endif()

cmake/OpenCVFindIPP.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ macro(ipp_detect_version)
146146
IMPORTED_LOCATION ${IPP_LIBRARY_DIR}/${IPP_LIB_PREFIX}${IPP_PREFIX}${name}${IPP_SUFFIX}${IPP_LIB_SUFFIX}
147147
)
148148
list(APPEND IPP_LIBRARIES ipp${name})
149-
if (NOT BUILD_SHARED_LIBS OR NOT INSTALL_CREATE_DISTRIB)
149+
if (NOT BUILD_SHARED_LIBS)
150150
# CMake doesn't support "install(TARGETS ${IPP_PREFIX}${name} " command with imported targets
151151
install(FILES ${IPP_LIBRARY_DIR}/${IPP_LIB_PREFIX}${IPP_PREFIX}${name}${IPP_SUFFIX}${IPP_LIB_SUFFIX}
152152
DESTINATION ${OPENCV_3P_LIB_INSTALL_PATH} COMPONENT dev)

0 commit comments

Comments
 (0)