105 lines
3.4 KiB
CMake
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)
|