Skip to content

Instantly share code, notes, and snippets.

@simin75simin
Created December 9, 2021 02:14
Show Gist options
  • Save simin75simin/029c65cdaa3cdd796d3d8ae00c50cd81 to your computer and use it in GitHub Desktop.
Save simin75simin/029c65cdaa3cdd796d3d8ae00c50cd81 to your computer and use it in GitHub Desktop.
hxfr cmake modified
# also change 3dscan path in 430 dir
# also copy dj's 430 dir if needed
cmake_minimum_required(VERSION 2.8.12)
project(hxfr C CXX)
set(PROJECT_VERSION_MAJOR 0)
set(PROJECT_VERSION_MINOR 5)
set(PROJECT_VERSION_PATCH 0)
set(PROJECT_VERSION_TWEAK 0)
set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}.${PROJECT_VERSION_TWEAK})
set(PROJECT_DESCRIPTION "Himax Face Recognition App")
set(PROJECT_HOMEPAGE_URL "https://www.himax.com.tw/")
set(PROJECT_EXECUTABLE_NAME "hxfr")
set(PROJECT_SHARED_LIBUVC_NAME "uvc")
#set(PROJECT_STATIC_LIBUVC_NAME "uvc_static")
set(PROJECT_SHARED_LIBPIXTALKS_FACEKIT_NAME "pixtalks_facekit")
if(NOT CMAKE_BUILD_TYPE)
message(STATUS "No build type selected, default to 'Debug'")
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "" FORCE)
endif()
if(NOT CMAKE_LINK_LIB_TYPE)
message(STATUS "No linking library type selected, default to 'Shared'")
set(CMAKE_LINK_LIB_TYPE "Shared" CACHE STRING "" FORCE)
endif()
set(CMAKE_C_STANDARD 99) # Available options: 90, 99, 11.
set(CMAKE_CXX_STANDARD 11) # Available options: 98, 11, 14, 17.
set(CMAKE_C_FLAGS "-march=native -Wall -Wextra")
set(CMAKE_C_FLAGS_DEBUG "-O0 -g -DWXDEBUG")
set(CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG -flto")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g -DWXDEBUG -DNDEBUG -flto")
set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG -flto")
set(CMAKE_CXX_FLAGS "-march=native -Wall -Wextra")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g -DWXDEBUG")
set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG -flto")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -DWXDEBUG -DNDEBUG -flto")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG -flto")
find_package(PkgConfig)
pkg_check_modules(LibUSB REQUIRED libusb-1.0)
pkg_check_modules(LibCrypto REQUIRED libcrypto>=1.1)
find_package(wxWidgets 3.0 REQUIRED COMPONENTS core base)
#find_package(OpenCV 3.4.6 EXACT
# REQUIRED COMPONENTS core imgproc imgcodecs
# PATHS ${CMAKE_CURRENT_LIST_DIR}/lib/libopencv/share/OpenCV
#)
find_package(OpenCV 3.2 EXACT
REQUIRED COMPONENTS core imgproc imgcodecs
)
include(${wxWidgets_USE_FILE})
include_directories(
${PROJECT_SOURCE_DIR}/include
${PROJECT_SOURCE_DIR}/res
${PROJECT_SOURCE_DIR}/src
${PROJECT_SOURCE_DIR}/lib/libpixtalks_facekit/include
${OpenCV_INCLUDE_DIRS}
${LibCrypto_INCLUDE_DIRS}
${PROJECT_SOURCE_DIR}/lib/libuvc/include
)
set(SRCS
src/main.cpp
src/thread.cpp
src/basic_draw_pane.cpp
src/cam_ctl.cpp
src/face_alg.cpp
src/io_utils.cpp
src/dump_img.cpp
)
add_executable(${PROJECT_EXECUTABLE_NAME}
${SRCS}
)
# Add dependent library: libpixtalks facekit
add_library(${PROJECT_SHARED_LIBPIXTALKS_FACEKIT_NAME} SHARED IMPORTED)
set_property(TARGET ${PROJECT_SHARED_LIBPIXTALKS_FACEKIT_NAME}
PROPERTY IMPORTED_LOCATION ${PROJECT_SOURCE_DIR}/lib/libpixtalks_facekit/lib/libpixtalks_sh430_facekit.so
)
add_library(${PROJECT_SHARED_LIBUVC_NAME} SHARED IMPORTED)
set_property(TARGET ${PROJECT_SHARED_LIBUVC_NAME}
PROPERTY IMPORTED_LOCATION ${PROJECT_SOURCE_DIR}/lib/libuvc/lib/debug/libuvc.so
)
link_directories(${PROJECT_SOURCE_DIR}/lib/libpixtalks_facekit/lib)
# Add dependent library: libuvc
# add_library(${PROJECT_SHARED_LIBUVC_NAME} SHARED IMPORTED)
# add_library(${PROJECT_STATIC_LIBUVC_NAME} STATIC IMPORTED)
# if(CMAKE_BUILD_TYPE STREQUAL "Release")
# set_property(TARGET ${PROJECT_SHARED_LIBUVC_NAME}
# PROPERTY IMPORTED_LOCATION ${PROJECT_SOURCE_DIR}/lib/libuvc/lib/release/libuvc.so
# )
# set_property(TARGET ${PROJECT_STATIC_LIBUVC_NAME}
# PROPERTY IMPORTED_LOCATION ${PROJECT_SOURCE_DIR}/lib/libuvc/lib/release/libuvc.a)
# link_directories(${PROJECT_SOURCE_DIR}/lib/libuvc/lib/release)
# else()
# set_property(TARGET ${PROJECT_SHARED_LIBUVC_NAME}
# PROPERTY IMPORTED_LOCATION ${PROJECT_SOURCE_DIR}/lib/libuvc/lib/debug/libuvc.so
# )
# set_property(TARGET ${PROJECT_STATIC_LIBUVC_NAME}
# PROPERTY IMPORTED_LOCATION ${PROJECT_SOURCE_DIR}/lib/libuvc/lib/debug/libuvc.a
# )
# link_directories(${PROJECT_SOURCE_DIR}/lib/libuvc/lib/debug)
# endif()
# target_link_libraries(${PROJECT_SHARED_LIBUVC_NAME} INTERFACE ${LibUSB_LIBRARIES})
# target_link_libraries(${PROJECT_STATIC_LIBUVC_NAME} INTERFACE ${LibUSB_LIBRARIES})
# Add dependent library: dependent libraries
file(GLOB Other_dep_lib_paths
${PROJECT_SOURCE_DIR}/lib/other_deps/lib/lib*.so*
)
foreach(Other_dep_lib_path ${Other_dep_lib_paths})
get_filename_component(Other_dep_lib_orig_name "${Other_dep_lib_path}" NAME_WE)
string(REGEX REPLACE "^lib(.*)" "\\1" Other_dep_lib_name ${Other_dep_lib_orig_name})
list(APPEND Other_dep_libs ${Other_dep_lib_name})
add_library(${Other_dep_lib_name} SHARED IMPORTED)
set_property(TARGET ${Other_dep_lib_name}
PROPERTY IMPORTED_LOCATION ${Other_dep_lib_path}
)
endforeach()
link_directories(${PROJECT_SOURCE_DIR}/lib/other_deps/lib)
# Linking main program with above dependent libraries
target_link_libraries(${PROJECT_EXECUTABLE_NAME} PUBLIC
${wxWidgets_LIBRARIES}
${PROJECT_SHARED_LIBPIXTALKS_FACEKIT_NAME}
${PROJECT_SHARED_LIBUVC_NAME}
${OpenCV_LIBS}
${LibCrypto_LIBRARIES}
${Other_dep_libs}
)
# if(CMAKE_LINK_LIB_TYPE STREQUAL "Static")
# target_link_libraries(${PROJECT_EXECUTABLE_NAME} PUBLIC
# ${PROJECT_STATIC_LIBUVC_NAME}
# )
# else()
# target_link_libraries(${PROJECT_EXECUTABLE_NAME} PUBLIC
# ${PROJECT_SHARED_LIBUVC_NAME}
# )
# endif()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment