You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
162 lines
5.8 KiB
162 lines
5.8 KiB
cmake_minimum_required(VERSION 2.6) |
|
|
|
set(rootProject cpp-sdk-samples) |
|
project(${rootProject}) |
|
|
|
# CMake includes |
|
include(cmake_modules/Macros.cmake) # Some custom macros we have writtens |
|
|
|
# ------------------- |
|
# CMAKE - ENVIRONMENT |
|
# -------------------- |
|
set(CXX_COMPILER_WARNINGS "-Wreturn-type" CACHE STRING "Compiler warnings to use") |
|
set(CMAKE_VERBOSE ON CACHE BOOL "Verbose mode") |
|
# Setup "Profile" build type |
|
set(CMAKE_CXX_FLAGS_PROFILE "-O3 -pg") |
|
set(CMAKE_C_FLAGS_PROFILE "-O3 -pg") |
|
set(CMAKE_EXE_LINKER_FLAGS_PROFILE "-pg") |
|
set(CMAKE_MODULE_LINKER_FLAGS_PROFILE "-pg") |
|
|
|
# Setup additional compiler warnings |
|
status("Setting up compiler warnings") |
|
if( MSVC ) |
|
# Force to always compile with W4 |
|
if( CMAKE_CXX_FLAGS MATCHES "/W[0-4]" ) |
|
string( REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" ) |
|
else() |
|
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4" ) |
|
endif() |
|
elseif( CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX ) |
|
# Update if necessary |
|
set( CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS} ${CXX_COMPILER_WARNINGS}" ) |
|
endif() |
|
|
|
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") |
|
status("Updating compiler to make use of C++14") |
|
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++14") |
|
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") |
|
endif() |
|
|
|
if(CMAKE_SIZEOF_VOID_P EQUAL 8) |
|
set(bitness 64) # We have a 64-bit machine |
|
else() |
|
set(bitness 32) # We have a 32-bit machine |
|
endif() |
|
status("Bitness detected: ${bitness}") |
|
|
|
|
|
# Setup install locations |
|
if( NOT RUNTIME_INSTALL_DIRECTORY ) |
|
set( RUNTIME_INSTALL_DIRECTORY "bin" CACHE STRING "Install sub-directory of CMAKE_INSTALL_PREFIX for RUNTIME targets (binaries, and *.dll on windows)." ) |
|
endif( NOT RUNTIME_INSTALL_DIRECTORY ) |
|
|
|
# -------------------- |
|
# LOCATE DEPENDENCIES |
|
# -------------------- |
|
|
|
# OpenCV |
|
# ---------------------------------------------------------------------------- |
|
# find_package OpenCV to get OpenCV_FOUND, OpenCV_INCLUDE_DIRS, OpenCV_LIBS, OpenCV_LINK_LIBRARIES |
|
# ---------------------------------------------------------------------------- |
|
set( OPENCV_COMPONENTS ml highgui core imgproc objdetect ) |
|
if( DEFINED OpenCV_DIR ) # Force the user to tell us which OpenCV they want (otherwise find_package can find the wrong one, cache it and changes to OpenCV_DIR are ignored) |
|
find_package(OpenCV REQUIRED PATHS ${OpenCV_DIR}) |
|
if( NOT OpenCV_FOUND) |
|
message(SEND_ERROR "Failed to find OpenCV. Double check that \"OpenCV_DIR\" to the root build directory of OpenCV.") |
|
endif(NOT OpenCV_FOUND) |
|
else( DEFINED OpenCV_DIR ) |
|
set( OpenCV_DIR "" CACHE PATH "Root directory for opencv BUILD directory." ) |
|
message(FATAL_ERROR "\"OpenCV_DIR\" not set. Please explicitly provide the path to the root build directory of OpenCV.") |
|
endif( DEFINED OpenCV_DIR ) |
|
|
|
# Boost package |
|
# ---------------------------------------------------------------------------- |
|
# BOOST_ROOT is needed by BoostConfig.cmake configuration file to |
|
# look for the Boost includes / libraries: |
|
# Boost_FOUND, Boost_INCLUDE_DIRS, Boost_LIBRARY_DIRS, Boost_LIBRARIES,Boost_VERSION |
|
set(Boost_USE_MULTITHREADED ON) |
|
set( BOOST_COMPONENTS system filesystem date_time regex thread timer chrono serialization log log_setup program_options) |
|
|
|
set( BOOST_MIN_VERSION "1.54.0" CACHE STRING "Minimum version of boost you would like to link against (e.g. C:/BOOST_1_55_0 is 1.55.0" ) |
|
status("") |
|
if( ANDROID ) |
|
find_host_package( Boost ${BOOST_MIN_VERSION} REQUIRED COMPONENTS ${BOOST_COMPONENTS} ) |
|
else( ANDROID ) |
|
find_package( Boost ${BOOST_MIN_VERSION} REQUIRED COMPONENTS ${BOOST_COMPONENTS} ) |
|
endif() |
|
if( NOT Boost_FOUND ) |
|
if( NOT DEFINED BOOST_ROOT ) |
|
set( BOOST_ROOT "" CACHE PATH "Root directory for Boost." ) |
|
endif( NOT DEFINED BOOST_ROOT ) |
|
message( FATAL_ERROR "Failed to find Boost (or missing components). Double check that \"BOOST_ROOT\" is properly set") |
|
endif( NOT Boost_FOUND ) |
|
|
|
|
|
|
|
# Affdex package |
|
# ---------------------------------------------------------------------------- |
|
|
|
set (AFFDEX_FOUND FALSE) |
|
|
|
if( DEFINED AFFDEX_DIR ) |
|
find_path(AFFDEX_INCLUDE_DIR FrameDetector.h |
|
HINTS "${AFFDEX_DIR}/include" ) |
|
|
|
find_library(AFFDEX_LIBRARY NAMES affdex-native |
|
HINTS "${AFFDEX_DIR}/lib" ) |
|
|
|
set(AFFDEX_INCLUDE_DIRS "${AFFDEX_INCLUDE_DIR}") |
|
set(AFFDEX_LIBRARIES "${AFFDEX_LIBRARY}") |
|
|
|
if (AFFDEX_INCLUDE_DIR AND AFFDEX_LIBRARY) |
|
set(AFFDEX_FOUND TRUE) |
|
endif (AFFDEX_INCLUDE_DIR AND AFFDEX_LIBRARY) |
|
|
|
set(AFFDEX_DATA_DIR "${AFFDEX_DIR}/data") |
|
|
|
|
|
if (NOT AFFDEX_FOUND) |
|
message(FATAL_ERROR "Unable to find the Affdex found") |
|
endif (NOT AFFDEX_FOUND) |
|
|
|
else (DEFINED AFFDEX_DIR) |
|
message(FATAL_ERROR "Please define AFFDEX_DIR") |
|
endif (DEFINED AFFDEX_DIR) |
|
|
|
|
|
add_subdirectory(opencv-webcam-demo) |
|
add_subdirectory(video-demo) |
|
|
|
# -------------------- |
|
# SUMMARY |
|
# -------------------- |
|
status("${CMAKE_INCLUDE_DIRECTORIES}") |
|
status( "------- SUMMARY ------- " ) |
|
status( "Boost version found = ${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION} (${Boost_VERSION})" ) |
|
foreach( comp ${BOOST_COMPONENTS} ) |
|
string( TOUPPER ${comp} COMP ) |
|
status( " - ${comp}" 1 THEN "${Boost_${COMP}_LIBRARY}" ) |
|
endforeach( comp ) |
|
|
|
status("") |
|
status("Affdex") |
|
foreach( lib ${AFFDEX_LIBRARIES} ) |
|
status( "${lib}") |
|
endforeach( lib ) |
|
|
|
status("") |
|
status( "OpenCV version found = ${OpenCV_VERSION_MAJOR}.${OpenCV_VERSION_MINOR}.${OpenCV_VERSION_PATCH} (${OpenCV_VERSION})" ) |
|
status( "OpenCV_LIB_DIR = ${OpenCV_DIR}/lib" ) |
|
foreach( lib ${OpenCV_LIBRARIES} ) |
|
foreach( comp ${OPENCV_COMPONENTS} ) |
|
if( ${lib} MATCHES ${comp} ) |
|
status( " - ${comp}" 1 THEN "${lib}" ) |
|
endif( ${lib} MATCHES ${comp} ) |
|
endforeach( comp ) |
|
endforeach( lib ) |
|
|
|
status("") |
|
status( "Apps identified for building:" ) |
|
foreach( app ${${rootProject}_APPS} ) |
|
status( " - ${app}" ) |
|
endforeach( app ${${rootProject}_APPS} )
|
|
|