1cmake_minimum_required(VERSION 2.8.11 FATAL_ERROR) 2 3project(Carotene) 4 5set(CAROTENE_NS "carotene" CACHE STRING "Namespace for Carotene definitions") 6 7set(CAROTENE_INCLUDE_DIR include) 8set(CAROTENE_SOURCE_DIR src) 9 10file(GLOB_RECURSE carotene_headers RELATIVE "${CMAKE_CURRENT_LIST_DIR}" "${CAROTENE_INCLUDE_DIR}/*.hpp") 11file(GLOB_RECURSE carotene_sources RELATIVE "${CMAKE_CURRENT_LIST_DIR}" "${CAROTENE_SOURCE_DIR}/*.cpp" 12 "${CAROTENE_SOURCE_DIR}/*.hpp") 13 14include_directories(${CAROTENE_INCLUDE_DIR}) 15 16if(CMAKE_COMPILER_IS_GNUCC) 17 set(CMAKE_CXX_FLAGS "-fvisibility=hidden ${CMAKE_CXX_FLAGS}") 18 19 # allow more inlines - these parameters improve performance for: 20 # - matchTemplate about 5-10% 21 # - goodFeaturesToTrack 10-20% 22 # - cornerHarris 30% for some cases 23 if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "10.0.0") 24 set_source_files_properties(${carotene_sources} COMPILE_FLAGS "--param ipcp-unit-growth=100000 --param inline-unit-growth=100000 --param large-stack-frame-growth=5000") 25 else() 26 set_source_files_properties(${carotene_sources} COMPILE_FLAGS "--param ipa-cp-unit-growth=100000 --param inline-unit-growth=100000 --param large-stack-frame-growth=5000") 27 endif() 28endif() 29 30add_library(carotene_objs OBJECT 31 ${carotene_headers} 32 ${carotene_sources} 33) 34 35if(NOT CAROTENE_NS STREQUAL "carotene") 36 target_compile_definitions(carotene_objs PUBLIC "-DCAROTENE_NS=${CAROTENE_NS}") 37endif() 38 39if(WITH_NEON) 40 target_compile_definitions(carotene_objs PRIVATE "-DWITH_NEON") 41endif() 42 43add_library(carotene STATIC EXCLUDE_FROM_ALL "$<TARGET_OBJECTS:carotene_objs>") 44