From 912c1a1ee2b2f0ecfb25fa616eca7f0b342de7d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bodn=C3=A1r=20Zsombor?= <bodzsoaa@sch.bme.hu> Date: Wed, 16 Jun 2021 13:03:48 +0200 Subject: [PATCH] SM-14 Improve conan build --- CMakeLists.txt | 22 +++++++++------------- conanfile.py | 28 ++++++++++++++++++---------- src/CMakeLists.txt | 15 +++------------ tests/CMakeLists.txt | 10 ++-------- websocket/CMakeLists.txt | 8 +------- 5 files changed, 33 insertions(+), 50 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 93ba192..bfa5593 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,19 +16,15 @@ set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) -set(CMAKE_DEBUG_POSTFIX _d) +set(ENABLE_WEBSOCKET FALSE) +set(ENABLE_TESTS FALSE) -set(BUILD_WITH_CONAN OFF) -include(conanbuildinfo.cmake OPTIONAL) -if(BUILD_WITH_CONAN) - conan_basic_setup() -endif() - -find_package( - Qt5 - COMPONENTS Core Gui Network Concurrent - REQUIRED) +find_package(qt) add_subdirectory(src) -add_subdirectory(websocket) -add_subdirectory(tests) +if(ENABLE_WEBSOCKET) + add_subdirectory(websocket) +endif() +if(ENABLE_TESTS) + add_subdirectory(tests) +endif() diff --git a/conanfile.py b/conanfile.py index 9d04c69..366d0d5 100644 --- a/conanfile.py +++ b/conanfile.py @@ -5,29 +5,38 @@ class LibmuebConan(ConanFile): name = "libmueb" version = "4.0" description = "SchĂśnherz MĂĄtrix network library written in C++ using Qt" - url = "https://git.sch.bme.hu/matrix-group/libmueb-qt" + url = "https://git.sch.bme.hu/kszk/schmatrix/libmueb" license = "LGPL-3.0-or-later" author = "Zsombor BodnĂĄr (bodzsoaa@sch.bme.hu)" - topics = ("C++", "Qt 6", "SchĂśnherz MĂĄtrix") + topics = ("C++", "Qt 5", "SchĂśnherz MĂĄtrix") settings = "os", "compiler", "build_type", "arch" - options = {"shared": [True], "fPIC": [True]} - default_options = {"shared": True, "fPIC": True} + options = {"shared": [True, False], "fPIC": [True, False], + "websocket": [True, False], "tests": [True, False]} + default_options = {"shared": True, "*:shared": True, "fPIC": True, "websocket": False, "tests": False} requires = "qt/[^5.15.2]" build_requires = "cmake/[^3.17.0]", "ninja/1.10.2" - generators = "cmake" - exports_sources = "CMakeLists.txt", "!CMakeLists.txt.user", "include/*", "src/*" + generators = "cmake_find_package" + exports_sources = "CMakeLists.txt", "!CMakeLists.txt.user", "include/*", "src/*", "websocket/*", "tests/*" def configure(self): if self.settings.compiler == "Visual Studio": del self.settings.compiler.runtime + if self.options.websocket: + self.options["qt"].qtwebsockets = True + def config_options(self): if self.settings.os == "Windows": del self.options.fPIC def build(self): - cmake = CMake(self) - cmake.definitions["BUILD_WITH_CONAN"] = "ON" + cmake = CMake(self, "Ninja") + if self.options.websocket: + cmake.definitions["ENABLE_WEBSOCKET"] = "TRUE" + + if self.options.tests: + cmake.definitions["ENABLE_TESTS"] = "TRUE" + cmake.configure() cmake.build() @@ -40,5 +49,4 @@ class LibmuebConan(ConanFile): self.copy("*.a", dst="lib", keep_path=False) def package_info(self): - self.cpp_info.release.libs = ["muebreceiver", "muebtransmitter"] - self.cpp_info.debug.libs = ["muebreceiver_d", "muebtransmitter_d"] + self.cpp_info.libs = ["muebreceiver", "muebtransmitter", "mueb"] diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 30526d5..4d77130 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -4,10 +4,7 @@ add_library( ${CMAKE_SOURCE_DIR}/include/libmueb/muebtransmitter.h configuration.h muebtransmitter_p.h muebtransmitter.cc configuration.cc) target_include_directories(muebtransmitter PUBLIC ../include/${PROJECT_NAME}) -target_link_libraries( - muebtransmitter - PUBLIC Qt5::Core Qt5::Gui - PRIVATE Qt5::Network Qt5::Concurrent) +target_link_libraries(muebtransmitter qt::qt) target_compile_definitions(muebtransmitter PRIVATE LIBMUEB_LIBRARY) add_library( @@ -16,10 +13,7 @@ add_library( ${CMAKE_SOURCE_DIR}/include/libmueb/muebreceiver.h configuration.h muebreceiver_p.h muebreceiver.cc configuration.cc) target_include_directories(muebreceiver PUBLIC ../include/${PROJECT_NAME}) -target_link_libraries( - muebreceiver - PUBLIC Qt5::Core Qt5::Gui - PRIVATE Qt5::Network) +target_link_libraries(muebreceiver qt::qt) target_compile_definitions(muebreceiver PRIVATE LIBMUEB_LIBRARY) add_library( @@ -34,8 +28,5 @@ add_library( muebreceiver.cc configuration.cc) target_include_directories(mueb PUBLIC ../include/${PROJECT_NAME}) -target_link_libraries( - mueb - PUBLIC Qt5::Core Qt5::Gui - PRIVATE Qt5::Network Qt5::Concurrent) +target_link_libraries(mueb qt::qt) target_compile_definitions(mueb PRIVATE LIBMUEB_LIBRARY) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 5b48c2a..0cb2daf 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,13 +1,7 @@ add_executable(testmuebtransmitter testmuebtransmitter.cc) -target_link_libraries(testmuebtransmitter PRIVATE muebtransmitter Qt5::Core - Qt5::Gui) +target_link_libraries(testmuebtransmitter muebtransmitter qt::qt) add_executable(testmuebreceiver testmuebreceiver.cc) -find_package( - Qt5 - COMPONENTS Widgets - REQUIRED) -target_link_libraries(testmuebreceiver PRIVATE muebreceiver Qt5::Core Qt5::Gui - Qt5::Widgets) +target_link_libraries(testmuebreceiver muebreceiver qt::qt) diff --git a/websocket/CMakeLists.txt b/websocket/CMakeLists.txt index aa67be4..642154b 100644 --- a/websocket/CMakeLists.txt +++ b/websocket/CMakeLists.txt @@ -1,10 +1,4 @@ add_executable(libmueb-websocket-server muebwebsocketserver.h muebwebsocketserver.cc main.cc) -find_package( - Qt5 - COMPONENTS WebChannel WebSockets - REQUIRED) -target_link_libraries( - libmueb-websocket-server PRIVATE Qt5::Core Qt5::Gui Qt5::WebSockets - muebtransmitter) +target_link_libraries(libmueb-websocket-server muebtransmitter qt::qt) -- GitLab