cmake_minimum_required (VERSION 3.8) set(PROJECT_NAME libLicenseClient) project (${PROJECT_NAME}) # Download automatically, you can also just copy the conan.cmake file if(NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake") message(STATUS "Downloading conan.cmake from https://github.com/conan-io/cmake-conan") file(DOWNLOAD "https://raw.githubusercontent.com/conan-io/cmake-conan/v0.16.1/conan.cmake" "${CMAKE_BINARY_DIR}/conan.cmake" EXPECTED_HASH SHA256=396e16d0f5eabdc6a14afddbcfff62a54a7ee75c6da23f32f7a31bc85db23484 TLS_VERIFY ON) endif() set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_PREFIX_PATH ${PROJECT_BINARY_DIR}) include(${CMAKE_BINARY_DIR}/conan.cmake) conan_cmake_run(CONANFILE conanfile.txt BUILD missing BASIC_SETUP) ################################################################################ # Source groups ################################################################################ set(api "api/CachedDownloader.h" "api/CryptoUtils.h" "api/HTTPClient.h" "api/IDownloader.h" "api/IModuleDatabase.h" "api/JSONModuleDatabase.h" "api/JSONSerialization.h" "api/LicenseClient.h" "api/ModuleManager.h" "api/ModuleUpdate.h" "api/ModuleVersion.h" "api/OSUtils.h" "api/SystemParams.h" "api/SystemParamsProvider.h" "api/SystemParamsProvider_win.h" "api/SystemParamsProvider_linux.h" ) source_group("api" FILES ${api}) set(src "api/OSUtils_win.cpp" "src/CachedDownloader.cpp" "src/CryptoUtils.cpp" "src/HashUtils.cpp" "src/HashUtils.h" "src/HTTPClient.cpp" "src/JSONModuleDatabase.cpp" "src/JSONSerialization.cpp" "src/LicenseClient.cpp" "src/ModuleManager.cpp" "src/ModuleUpdate.cpp" "src/SafeFileUtils.cpp" "src/SafeFileUtils.h" "src/SystemParams.cpp" "src/SystemParamsProvider_win.cpp" "src/SystemParamsProvider_linux.cpp" ) source_group("src" FILES ${src}) set(ALL_FILES ${api} ${src} ) if(UNIX) set_source_files_properties(api/OSUtils_win.cpp PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties(src/SystemParamsProvider_win.cpp PROPERTIES HEADER_FILE_ONLY TRUE) else(WIN32) set_source_files_properties(src/SystemParamsProvider_linux.cpp PROPERTIES HEADER_FILE_ONLY TRUE) endif() ################################################################################ # Target ################################################################################ add_library(${PROJECT_NAME} STATIC ${ALL_FILES}) # Find the QtWidgets library message(STATUS "CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}") find_package(cryptopp CONFIG) find_package(curl CONFIG REQUIRED COMPONENTS libcurl) find_package(libzip CONFIG REQUIRED COMPONENTS zip) find_package(boost CONFIG REQUIRED COMPONENTS filesystem iostreams) # Required on Unix OS family to be able to be linked into shared libraries. set_target_properties(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON) target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/api ) target_link_libraries(${PROJECT_NAME} cryptopp::cryptopp-static CURL::libcurl libzip::zip Boost::filesystem Boost::iostreams) # Expose public includes (including Boost transitively) to other # subprojects through cache variable. set(${PROJECT_NAME}_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/api CACHE INTERNAL "${PROJECT_NAME}: Include Directories" FORCE)