🔧 Replaced find_libs with conan

This commit is contained in:
Edgar 2021-02-12 12:52:50 +01:00 committed by Rasmus Karlsson
parent ffc6b41573
commit 2df55138f8
6 changed files with 24 additions and 234 deletions

View file

@ -1,20 +1,24 @@
cmake_minimum_required(VERSION 3.8) cmake_minimum_required(VERSION 3.8)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_SOURCE_DIR}/lib ${CMAKE_BINARY_DIR})
set(CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/dependencies" CACHE PATH "Path to the dependencies")
include(FeatureSummary) include(FeatureSummary)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
project(Chatterino2) project(Chatterino2)
include(pmm)
pmm(CONAN REMOTES BINCRAFTERS)
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt5 REQUIRED COMPONENTS Core Widgets Gui Network Multimedia Svg Concurrent) find_package(Qt5 REQUIRED COMPONENTS Core Widgets Gui Network Multimedia Svg Concurrent)
#include(pmm)
#pmm(CONAN REMOTES BINCRAFTERS)
add_subdirectory(src) add_subdirectory(src)
add_subdirectory(tests) #add_subdirectory(tests)
feature_summary(WHAT ALL) feature_summary(WHAT ALL)

View file

@ -1,10 +1,14 @@
[requires] [requires]
openssl/1.1.1d openssl/1.1.1d
boost/1.71.0 boost/1.75.0
communi/3.6.0@test/test
serialize/0.1@test/test
QtKeychain/0.12.90@test/test
signals/0.1@test/test
WebSocketpp/0.8.1@test/test
[generators] [generators]
qmake cmake
cmake_find_package
[options] [options]
openssl:shared=True openssl:shared=True

View file

@ -1,186 +0,0 @@
cmake_minimum_required(VERSION 3.2)
# ------------------------------------------------------------------------------------------------#
# The intention of this script is to provide a simple solution for building all dependencies
# required for Chatterino2. It is in fact a super- or meta-build project which makes use of
# the ExternalProject module of CMake to build the individual dependencies.
# ------------------------------------------------------------------------------------------------#
project(chatterino2-dependencies VERSION 1)
# ------------------------------------------------------------------------------------------------#
# Options to enable/disable building specific dependencies
# ------------------------------------------------------------------------------------------------#
# Options with same default value on all platforms
option(BUILD_HUMANIZE "Build Humanize IRC framework" ON)
option(BUILD_QTKEYCHAIN "Build QtKeychain" ON)
option(BUILD_RAPIDJSON "Build RapidJSON library" ON)
option(BUILD_SERIALIZE "Build Serialize library" ON)
option(BUILD_SIGNALS "Build Signals library" ON)
option(BUILD_WEBSOCKETPP "Build WebSocketpp library" ON)
# ------------------------------------------------------------------------------------------------#
# General setup and initialization
# ------------------------------------------------------------------------------------------------#
include(ExternalProject)
# Set the EP_BASE directory property to setup the build directory structure (see the
# ExternalProject documentation for more information)
set_property(DIRECTORY PROPERTY EP_BASE ${CMAKE_BINARY_DIR})
# Determine the name for the output directory where dependencies are going to be installed
if (WIN32)
set(DEPENDENCIES_OUTPUT_DIR ${CMAKE_BINARY_DIR}/Dependencies_${CMAKE_SYSTEM_NAME}_${CMAKE_GENERATOR})
string(REPLACE " " "-" DEPENDENCIES_OUTPUT_DIR ${DEPENDENCIES_OUTPUT_DIR})
else ()
set(DEPENDENCIES_OUTPUT_DIR ${CMAKE_BINARY_DIR}/Dependencies_${CMAKE_SYSTEM_NAME})
endif ()
if (MSVC)
set(DEPENDENCIES_INCLUDE_DIR ${DEPENDENCIES_OUTPUT_DIR}/include)
set(DEPENDENCIES_LIB_DIR ${DEPENDENCIES_OUTPUT_DIR}/lib)
set(DEPENDENCIES_BIN_DIR ${DEPENDENCIES_OUTPUT_DIR}/bin)
else ()
set(DEPENDENCIES_INCLUDE_DIR ${DEPENDENCIES_OUTPUT_DIR}/include)
set(DEPENDENCIES_LIB_DIR ${DEPENDENCIES_OUTPUT_DIR}/lib/${CMAKE_BUILD_TYPE})
set(DEPENDENCIES_BIN_DIR ${DEPENDENCIES_OUTPUT_DIR}/bin/${CMAKE_BUILD_TYPE})
endif ()
file(MAKE_DIRECTORY ${DEPENDENCIES_INCLUDE_DIR})
file(MAKE_DIRECTORY ${DEPENDENCIES_LIB_DIR})
file(MAKE_DIRECTORY ${DEPENDENCIES_BIN_DIR})
# On Linux some packages rely on pkgconfig to be found correctly. Therefore the environment variable
# needs to be set up accordingly. In addition when building depedencies which need to find other
# dependencies (e.g. MyGUI searching for OGRE) PKG_CONFIG_USE_CMAKE_PREFIX_PATH needs to be set to TRUE.
if (UNIX)
set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:${DEPENDENCIES_LIB_DIR}/pkgconfig")
endif ()
# ------------------------------------------------------------------------------------------------#
# Humanize
# ------------------------------------------------------------------------------------------------#
if (BUILD_HUMANIZE)
ExternalProject_Add(
Humanize
DOWNLOAD_COMMAND ""
SOURCE_DIR "${CMAKE_SOURCE_DIR}/humanize"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/humanize/include/humanize ${DEPENDENCIES_OUTPUT_DIR}/include/humanize
)
endif ()
# ------------------------------------------------------------------------------------------------#
# LibCommuni
# ------------------------------------------------------------------------------------------------#
if (BUILD_LIBCOMMUNI)
ExternalProject_Add(
LibCommuni
GIT_REPOSITORY https://github.com/AnotherFoxGuy/libcommuni-cmake.git
GIT_SHALLOW TRUE
GIT_PROGRESS TRUE
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX=${DEPENDENCIES_OUTPUT_DIR}
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
)
endif ()
# ------------------------------------------------------------------------------------------------#
# QtKeychain
# ------------------------------------------------------------------------------------------------#
if (BUILD_QTKEYCHAIN)
ExternalProject_Add(
QtKeychain
DOWNLOAD_COMMAND ""
SOURCE_DIR "${CMAKE_SOURCE_DIR}/qtkeychain"
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX=${DEPENDENCIES_OUTPUT_DIR}
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
)
endif ()
# ------------------------------------------------------------------------------------------------#
# RapidJSON
# ------------------------------------------------------------------------------------------------#
if (BUILD_RAPIDJSON)
ExternalProject_Add(
RapidJSON
DOWNLOAD_COMMAND ""
SOURCE_DIR "${CMAKE_SOURCE_DIR}/rapidjson"
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX=${DEPENDENCIES_OUTPUT_DIR}
-DINCLUDE_INSTALL_DIR=${DEPENDENCIES_OUTPUT_DIR}/include # rapidjson will add "rapidjson" subdirectory
-DRAPIDJSON_BUILD_DOC=NO
-DRAPIDJSON_BUILD_EXAMPLES=NO
-DRAPIDJSON_BUILD_TESTS=NO
-DRAPIDJSON_BUILD_THIRDPARTY_GTEST=NO
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
)
endif ()
# ------------------------------------------------------------------------------------------------#
# Serialize
# ------------------------------------------------------------------------------------------------#
if (BUILD_SERIALIZE)
ExternalProject_Add(
Serialize
DOWNLOAD_COMMAND ""
SOURCE_DIR "${CMAKE_SOURCE_DIR}/serialize"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/serialize/include ${DEPENDENCIES_OUTPUT_DIR}/include
)
endif ()
# ------------------------------------------------------------------------------------------------#
# Signals
# ------------------------------------------------------------------------------------------------#
if (BUILD_SIGNALS)
ExternalProject_Add(
Signals
DOWNLOAD_COMMAND ""
SOURCE_DIR "${CMAKE_SOURCE_DIR}/signals"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/signals/include ${DEPENDENCIES_OUTPUT_DIR}/include
)
endif ()
# ------------------------------------------------------------------------------------------------#
# WebSocketpp
# ------------------------------------------------------------------------------------------------#
if (BUILD_WEBSOCKETPP)
ExternalProject_Add(
WebSocketpp
DOWNLOAD_COMMAND ""
SOURCE_DIR "${CMAKE_SOURCE_DIR}/websocketpp"
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX=${DEPENDENCIES_OUTPUT_DIR}
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
)
endif ()

View file

@ -1,9 +0,0 @@
project(PajladaSettings)
add_library(Settings ${CMAKE_SOURCE_DIR}/lib/settings/src/settings/settingdata.cpp
${CMAKE_SOURCE_DIR}/lib/settings/src/settings/settingmanager.cpp
${CMAKE_SOURCE_DIR}/lib/settings/src/settings/detail/realpath.cpp)
target_include_directories(Settings PRIVATE ${RapidJSON_INCLUDE_DIRS} ${Serialize_INCLUDE_DIR})
target_include_directories(Settings PUBLIC ${CMAKE_SOURCE_DIR}/lib/settings/include/)
target_link_libraries(Settings Serialize::Serialize)

View file

@ -1,2 +0,0 @@
add_library(WinToast ${CMAKE_SOURCE_DIR}/lib/WinToast/src/wintoastlib.cpp)
target_include_directories(WinToast PUBLIC "${CMAKE_SOURCE_DIR}/lib/WinToast/src/")

View file

@ -1,20 +1,5 @@
include(SourceFileUtils) include(SourceFileUtils)
find_package(Boost REQUIRED)
find_package(OpenSSL REQUIRED)
find_package(Humanize REQUIRED)
#find_package(LibCommuni REQUIRED)
find_package(Qt5keychain REQUIRED)
find_package(Rapidjson REQUIRED)
find_package(Signals REQUIRED)
find_package(Serialize REQUIRED)
find_package(Websocketpp REQUIRED)
include(Settings)
include(LibCommuni)
include(WinToast)
project(chatterino) project(chatterino)
IF(MSVC) IF(MSVC)
@ -25,10 +10,6 @@ file(GLOB_RECURSE SOURCE_FILES CONFIGURE_DEPENDS LIST_DIRECTORIES false "*.hpp"
generate_source_groups(${SOURCE_FILES}) generate_source_groups(${SOURCE_FILES})
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
add_executable(${PROJECT_NAME} ${SOURCE_FILES}) add_executable(${PROJECT_NAME} ${SOURCE_FILES})
target_compile_definitions(${PROJECT_NAME} PRIVATE CHATTERINO UNICODE USEWINSDK AB_CUSTOM_THEME AB_CUSTOM_SETTINGS IRC_STATIC IRC_NAMESPACE=Communi) # target_compile_definitions(${PROJECT_NAME} PRIVATE CHATTERINO UNICODE USEWINSDK AB_CUSTOM_THEME AB_CUSTOM_SETTINGS IRC_STATIC IRC_NAMESPACE=Communi) #
@ -36,8 +17,6 @@ target_compile_definitions(${PROJECT_NAME} PRIVATE CHATTERINO_GIT_HASH=\"XD\" CH
target_include_directories(${PROJECT_NAME} PRIVATE . "${RapidJSON_INCLUDE_DIRS}") target_include_directories(${PROJECT_NAME} PRIVATE . "${RapidJSON_INCLUDE_DIRS}")
target_link_libraries(${PROJECT_NAME} Settings WinToast qt5keychain)
target_link_libraries(${PROJECT_NAME} target_link_libraries(${PROJECT_NAME}
Qt5::Gui Qt5::Gui
Qt5::Widgets Qt5::Widgets
@ -45,13 +24,13 @@ target_link_libraries(${PROJECT_NAME}
Qt5::Multimedia Qt5::Multimedia
Qt5::Svg Qt5::Svg
Qt5::Concurrent Qt5::Concurrent
Boost::Boost CONAN_PKG::boost
OpenSSL::OpenSSL CONAN_PKG::QtKeychain
Humanize::Humanize CONAN_PKG::openssl
LibCommuni::LibCommuni CONAN_PKG::communi
Serialize::Serialize CONAN_PKG::serialize
Signals::Signals CONAN_PKG::signals
websocketpp::websocketpp CONAN_PKG::WebSocketpp
) )
target_precompile_headers(${PROJECT_NAME} PRIVATE PrecompiledHeader.hpp) target_precompile_headers(${PROJECT_NAME} PRIVATE PrecompiledHeader.hpp)