libLicenseClient/CMakeLists.txt

105 lines
3.4 KiB
CMake

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)