cmake_minimum_required(VERSION 3.16) project(phash LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) option(PHASH_BUILD_SHARED "Build libphash as a shared library" ON) set(PHASH_SOURCES src/phash.cpp src/resize.cpp src/decode_stb.cpp src/hamming.cpp ) if(PHASH_BUILD_SHARED) add_library(phash SHARED ${PHASH_SOURCES}) else() add_library(phash STATIC ${PHASH_SOURCES}) endif() target_include_directories(phash PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/third_party ) # Keep C API symbols visible for dart:ffi / DynamicLibrary.process(). set_target_properties(phash PROPERTIES CXX_VISIBILITY_PRESET default VISIBILITY_INLINES_HIDDEN OFF POSITION_INDEPENDENT_CODE ON OUTPUT_NAME phash ) if(ANDROID) find_library(LOG_LIB log) target_link_libraries(phash PUBLIC m ${LOG_LIB}) elseif(UNIX) target_link_libraries(phash PUBLIC m) endif()