cmake_minimum_required(VERSION 3.2 FATAL_ERROR) project(keepupnpup CXX) list (APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules) option (USE_SYSTEM_MINIUPNP "Try to locate miniupnpc on the system and build against that" ON) if (USE_SYSTEM_MINIUPNP) find_package(Miniupnpc 2.0 REQUIRED) else() if (BUILD_SHARED_LIBS) set(upnp_lib_type "shared") set(UPNPC_BUILD_STATIC OFF CACHE BOOL "" FORCE) set(UPNPC_BUILD_SHARED ON CACHE BOOL "" FORCE) else() set(upnp_lib_type "static") set(UPNPC_BUILD_STATIC ON CACHE BOOL "" FORCE) set(UPNPC_BUILD_SHARED OFF CACHE BOOL "" FORCE) endif() set(UPNPC_BUILD_TESTS OFF CACHE BOOL "" FORCE) set(CXX_STANDARD_REQUIRED ON) add_subdirectory(lib/miniupnp/miniupnpc) endif() add_executable(${PROJECT_NAME} src/main.cpp src/upnp.cpp src/upnpexceptions.cpp ) target_include_directories(${PROJECT_NAME} PRIVATE lib/better-enums ) if (USE_SYSTEM_MINIUPNP) target_include_directories(${PROJECT_NAME} SYSTEM PRIVATE ${MINIUPNP_INCLUDE_DIR} ) target_link_libraries(${PROJECT_NAME} PRIVATE ${MINIUPNP_LIBRARY} ) else() target_include_directories(${PROJECT_NAME} PRIVATE lib/miniupnp/miniupnpc ) target_link_libraries(${PROJECT_NAME} libminiupnpc-${upnp_lib_type} ) endif() set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14)