From 3eb7e1392d6ded99d84b687e2e8f7e1aec1c150b Mon Sep 17 00:00:00 2001 From: "vladimir.kuznetsov" Date: Sun, 20 Nov 2022 21:25:15 +0300 Subject: [PATCH] feature/added cmake support for linux --- client/CMakeLists.txt | 45 ++++++++++++++++++++--------------- deploy/build_linux.sh | 7 +++--- service/CMakeLists.txt | 4 +++- service/server/CMakeLists.txt | 15 ++++++++++-- 4 files changed, 45 insertions(+), 26 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 9c8ea1df..44aa9350 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -8,7 +8,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(Qt6 REQUIRED COMPONENTS Widgets Core Gui Network Xml - RemoteObjects Quick Svg Quickcontrols2 + RemoteObjects Quick Svg QuickControls2 Core5Compat ) qt_standard_project_setup() @@ -180,9 +180,11 @@ endif() if(LINUX AND NOT ANDROID) add_compile_definitions(MVPN_LINUX) + set(OPENSSL_USE_STATIC_LIBS TRUE) + find_package(OpenSSL REQUIRED) set(LIBS ${LIBS} - /usr/lib/x86_64-linux-gnu/libcrypto.a - /usr/lib/x86_64-linux-gnu/libssl.a + OpenSSL::Crypto + OpenSSL::SSL ) link_directories(${CMAKE_CURRENT_LIST_DIR}/platforms/linux) endif() @@ -367,22 +369,6 @@ if(ANDROID) endforeach() endif() -# deploy artifacts required to run the application to the debug build folder -if(WIN32) - if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8") - set(DIR_NAME "x64") - else() - set(DIR_NAME "x32") - endif() - add_custom_command( - TARGET ${PROJECT} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E $,copy_directory,true> - ${CMAKE_SOURCE_DIR}/deploy/data/windows/${DIR_NAME} - $ - COMMAND_EXPAND_LISTS - ) -endif() - target_link_libraries(${PROJECT} PRIVATE Qt6::Widgets Qt6::Core Qt6::Gui Qt6::Network Qt6::Xml Qt6::RemoteObjects @@ -394,3 +380,24 @@ if(WIN32 OR APPLE OR (LINUX AND NOT ANDROID)) qt_add_repc_replicas(${PROJECT} ${CMAKE_CURRENT_LIST_DIR}/../ipc/ipc_interface.rep) qt_add_repc_replicas(${PROJECT} ${CMAKE_CURRENT_LIST_DIR}/../ipc/ipc_process_interface.rep) endif() + +# deploy artifacts required to run the application to the debug build folder +if(WIN32) + if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8") + set(DEPLOY_ARTIFACT_PATH "windows/x64") + else() + set(DEPLOY_ARTIFACT_PATH "windows/x32") + endif() +elseif(LINUX) + set(DEPLOY_ARTIFACT_PATH "linux/client") +elseif(APPLE) + set(DEPLOY_ARTIFACT_PATH "macos") +endif() + +add_custom_command( + TARGET ${PROJECT} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E $,copy_directory,true> + ${CMAKE_SOURCE_DIR}/deploy/data/${DEPLOY_ARTIFACT_PATH} + $ + COMMAND_EXPAND_LISTS +) diff --git a/deploy/build_linux.sh b/deploy/build_linux.sh index f72f1a0c..2eab7ca6 100755 --- a/deploy/build_linux.sh +++ b/deploy/build_linux.sh @@ -47,16 +47,15 @@ echo "Using Qt in $QT_BIN_DIR" # Checking env -$QT_BIN_DIR/qmake -v -make -v +$QT_BIN_DIR/qt-cmake --version gcc -v # Build App echo "Building App..." cd $BUILD_DIR -$QT_BIN_DIR/qmake $PROJECT_DIR/AmneziaVPN.pro 'CONFIG+=release CONFIG+=x86_64' -make +$QT_BIN_DIR/qt-cmake -S $PROJECT_DIR +cmake --build . --config release # Build and run tests here diff --git a/service/CMakeLists.txt b/service/CMakeLists.txt index 86183ad6..abde0c70 100644 --- a/service/CMakeLists.txt +++ b/service/CMakeLists.txt @@ -14,4 +14,6 @@ if(NOT IOS AND NOT ANDROID) add_subdirectory(server) endif() -add_subdirectory(wireguard-service) +if(WIN32) + add_subdirectory(wireguard-service) +endif() \ No newline at end of file diff --git a/service/server/CMakeLists.txt b/service/server/CMakeLists.txt index 6f1e16d2..31ee3372 100644 --- a/service/server/CMakeLists.txt +++ b/service/server/CMakeLists.txt @@ -81,8 +81,6 @@ endif() include(${CMAKE_CURRENT_LIST_DIR}/../src/qtservice.cmake) -message(${CMAKE_CURRENT_BINARY_DIR}) - include_directories( ${CMAKE_CURRENT_LIST_DIR}/../../client ${CMAKE_CURRENT_LIST_DIR}/../../ipc @@ -97,3 +95,16 @@ qt_add_repc_sources(${PROJECT} ${CMAKE_CURRENT_LIST_DIR}/../../ipc/ipc_interface if(NOT IOS) qt_add_repc_sources(${PROJECT} ${CMAKE_CURRENT_LIST_DIR}/../../ipc/ipc_process_interface.rep) endif() + +# deploy artifacts required to run the application to the debug build folder +if(LINUX) + set(DEPLOY_ARTIFACT_PATH "linux/service") +endif() + +add_custom_command( + TARGET ${PROJECT} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E $,copy_directory,true> + ${CMAKE_SOURCE_DIR}/deploy/data/${DEPLOY_ARTIFACT_PATH} + $ + COMMAND_EXPAND_LISTS +) \ No newline at end of file