1 Star 0 Fork 0

lovelacelee / libfacedetection

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
CMakeLists.txt 6.26 KB
一键复制 编辑 原始数据 按行查看 历史
RNmingbai 提交于 2022-09-14 12:07 . version -> 0.0.3
# CMakeLists for libfacedetectcnn
project(libfacedetection)
cmake_minimum_required(VERSION 2.8.12)
option(ENABLE_NEON "whether use neon, if use arm please set it on" OFF)
option(ENABLE_AVX512 "use avx512" OFF)
option(ENABLE_AVX2 "use avx2" ON)
option(DEMO "build the demo" OFF)
option(USE_OPENMP "Use OpenMP" ON)
if (BUILD_SHARED_LIBS)
add_definitions(-DBUILD_SHARED_LIBS)
if (CMAKE_COMPILER_IS_GNUCXX AND NOT MINGW)
# Just setting CMAKE_POSITION_INDEPENDENT_CODE should be enough to set
# -fPIC for GCC but sometimes it still doesn't get set, so make sure it
# does.
add_definitions("-fPIC")
endif()
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif()
SET(BUILD_VERSION "v0.0.3")
# Find Git Version Patch
IF(EXISTS "${CMAKE_SOURCE_DIR}/.git")
if(NOT GIT)
SET(GIT $ENV{GIT})
endif()
if(NOT GIT)
FIND_PROGRAM(GIT NAMES git git.exe git.cmd)
endif()
IF(GIT)
EXECUTE_PROCESS(
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMAND ${GIT} describe --tags
OUTPUT_VARIABLE GIT_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT GIT_VERSION)
EXECUTE_PROCESS(
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMAND ${GIT} rev-parse --short HEAD
OUTPUT_VARIABLE GIT_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE
)
endif()
IF(NOT GIT_VERSION)
SET(BUILD_VERSION ${GIT_VERSION})
ENDIF()
ENDIF()
ENDIF()
message("BUILD_VERSION:${BUILD_VERSION}")
SET(fdt_base_dir ${PROJECT_SOURCE_DIR})
SET(fdt_src_dir ${fdt_base_dir}/src)
SET(fdt_inc_dir ${fdt_base_dir}/src)
SET(fdt_lib_name facedetection)
FILE(GLOB_RECURSE fdt_source_files ${fdt_src_dir}/*.cpp)
LIST(SORT fdt_source_files)
SET(INSTALLHEADER_FILES ${fdt_inc_dir}/facedetectcnn.h)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
IF(MSVC)
# This option is to enable the /MP switch for Visual Studio 2005 and above compilers
OPTION(WIN32_USE_MP "Set to ON to build with the /MP option (Visual Studio 2005 and above)." ON)
IF(WIN32_USE_MP)
#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
add_compile_options(/MP)
ENDIF(WIN32_USE_MP)
add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
ENDIF(MSVC)
IF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU"
OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
#use -O3 to speedup
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
ENDIF()
if(ENABLE_AVX512)
add_definitions(-D_ENABLE_AVX512)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx512bw")
endif()
if(ENABLE_AVX2)
add_definitions(-D_ENABLE_AVX2)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx2 -mfma")
endif()
if(ENABLE_NEON)
message("Using ENON")
add_definitions(-D_ENABLE_NEON)
endif()
if(USE_OPENMP)
FIND_PACKAGE(OpenMP)
if(OPENMP_FOUND)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
endif()
endif()
INCLUDE_DIRECTORIES(${fdt_inc_dir})
include(CMakePackageConfigHelpers)
include(GenerateExportHeader)
include(GNUInstallDirs)
# Create a library
ADD_LIBRARY(${fdt_lib_name} ${fdt_source_files} ${INSTALLHEADER_FILES})
# Generate export header
GENERATE_EXPORT_HEADER(${fdt_lib_name})
string(TOLOWER ${fdt_lib_name} LOWER_PROJECT_NAME)
set(INSTALLHEADER_FILES ${INSTALLHEADER_FILES}
${CMAKE_CURRENT_BINARY_DIR}/${LOWER_PROJECT_NAME}_export.h)
file(COPY ${CMAKE_CURRENT_BINARY_DIR}/${LOWER_PROJECT_NAME}_export.h
DESTINATION ${CMAKE_BINARY_DIR})
include_directories(${fdt_lib_name} ${CMAKE_BINARY_DIR})
set_target_properties(${fdt_lib_name} PROPERTIES
PUBLIC_HEADER "${INSTALLHEADER_FILES}" # Install head files
VERSION ${BUILD_VERSION}
)
# Install target
INSTALL(TARGETS ${fdt_lib_name}
EXPORT ${fdt_lib_name}Config
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/facedetection
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
export(TARGETS ${fdt_lib_name}
APPEND FILE ${CMAKE_BINARY_DIR}/${fdt_lib_name}Config.cmake
)
# Install cmake configure files
install(EXPORT ${fdt_lib_name}Config
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${fdt_lib_name}"
)
write_basic_package_version_file(
"${CMAKE_BINARY_DIR}/${fdt_lib_name}ConfigVersion.cmake"
VERSION ${BUILD_VERSION}
COMPATIBILITY AnyNewerVersion)
install(FILES "${CMAKE_BINARY_DIR}/${fdt_lib_name}ConfigVersion.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${fdt_lib_name}")
# Create demo. OpenCV is requred.
if (DEMO)
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(detect-image-demo ${fdt_base_dir}/example/detect-image.cpp)
target_link_libraries(detect-image-demo ${fdt_lib_name} ${OpenCV_LIBS})
add_executable(detect-camera-demo ${fdt_base_dir}/example/detect-camera.cpp)
target_link_libraries(detect-camera-demo ${fdt_lib_name} ${OpenCV_LIBS})
add_executable(benchmark ${fdt_base_dir}/example/benchmark.cpp)
target_link_libraries(benchmark ${fdt_lib_name} ${OpenCV_LIBS})
endif()
if (GSTREAMER)
find_package(OpenCV REQUIRED)
include(FindPkgConfig)
pkg_search_module(GSTREAMER REQUIRED gstreamer-1.0)
pkg_search_module(GSTREAMER_BASE REQUIRED gstreamer-base-1.0)
pkg_search_module(GSTREAMER_VIDEO REQUIRED gstreamer-video-1.0)
add_library(gstfacedetect SHARED
example/libfacedetect.cpp
)
include_directories(gstfacedetect PRIVATE
${GSTREAMER_INCLUDE_DIRS}
${GSTREAMER_BASE_INCLUDE_DIRS}
${GSTREAMER_VIDEO_INCLUDE_DIRS}
${OpenCV_INCLUDE_DIRS}
)
target_link_libraries(gstfacedetect
${GSTREAMER_LIBRARIES}
${GSTREAMER_BASE_LIBRARIES}
${GSTREAMER_VIDEO_LIBRARIES}
${OpenCV_LIBS}
${fdt_lib_shared}
)
endif()
message("CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
message("LINKER_FLAGS: ${CMAKE_EXE_LINKER_FLAGS}")
message("AVX512 = ${ENABLE_AVX512}")
message("AVX2 = ${ENABLE_AVX2}")
message("NEON = ${ENABLE_NEON}")
message("OpenMP = ${OPENMP_FOUND}")
message("DEMO = ${DEMO}")
1
https://gitee.com/lovelacelee/libfacedetection.git
git@gitee.com:lovelacelee/libfacedetection.git
lovelacelee
libfacedetection
libfacedetection
master

搜索帮助