From 7da585fc273aee8bb59a5e1b95315e598ec6272f Mon Sep 17 00:00:00 2001 From: Macbook Date: Mon, 7 Oct 2024 21:42:45 +0700 Subject: [PATCH] update final code and cmake build file --- client/CMakeLists.txt | 53 ++++++++++++++++++++++++-------- client/cmake/osxtools.cmake | 2 +- client/protocols/vpnprotocol.cpp | 2 +- deploy/installer/config.cmake | 2 +- service/CMakeLists.txt | 2 +- 5 files changed, 45 insertions(+), 16 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index e712fd4a..fdb1f085 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -35,7 +35,7 @@ if(IOS OR MACOS_NE) endif() #Macos Network Extension doesn't need Widgets -if(WIN32 OR (APPLE AND NOT IOS) OR (LINUX AND NOT ANDROID) OR (NOT DEFINED MACOS_NE)) +if(WIN32 OR (APPLE AND NOT IOS AND NOT MACOS_NE) OR (LINUX AND NOT ANDROID)) set(PACKAGES ${PACKAGES} Widgets) endif() @@ -53,14 +53,18 @@ if(IOS OR MACOS_NE) endif() # message("Client desktop build ", ${MACOS_NE}) #Macos Network Extension doesn't need Widgets -if(WIN32 OR (APPLE AND NOT IOS) OR (LINUX AND NOT ANDROID) OR (APPLE AND NOT DEFINED MACOS_NE)) + +if(WIN32 OR (APPLE AND NOT IOS AND NOT MACOS_NE) OR (LINUX AND NOT ANDROID)) + message("Run this block when MACOS_NE is not defined or set to FALSE") set(LIBS ${LIBS} Qt6::Widgets) endif() qt_standard_project_setup() qt_add_executable(${PROJECT} MANUAL_FINALIZATION) -if(WIN32 OR (APPLE AND NOT IOS) OR (LINUX AND NOT ANDROID) OR (APPLE AND NOT DEFINED MACOS_NE)) +# TODO error in there +if(WIN32 OR (APPLE AND NOT IOS AND NOT MACOS_NE) OR (LINUX AND NOT ANDROID)) + message("Run this block when MACOS_NE is not defined or set to FALSE") 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) qt_add_repc_replicas(${PROJECT} ${CMAKE_CURRENT_LIST_DIR}/../ipc/ipc_process_tun2socks.rep) @@ -339,16 +343,12 @@ if(LINUX AND NOT ANDROID) set(LIBS ${LIBS} -static-libstdc++ -static-libgcc -ldl) link_directories(${CMAKE_CURRENT_LIST_DIR}/platforms/linux) endif() - -if(WIN32 OR (APPLE AND NOT IOS AND NOT MACOS_NE) OR (LINUX AND NOT ANDROID)) - message("Run this block when MACOS_NE is not defined or set to FALSE") -endif() - +message("In here") # Macos Network Extension doesn't need if(WIN32 OR (APPLE AND NOT IOS AND NOT MACOS_NE) OR (LINUX AND NOT ANDROID)) - message("Client desktop build") + message("-----> Client desktop build") add_compile_definitions(AMNEZIA_DESKTOP) - + message("-----> Add AMNEZIA_DESKTOP") set(HEADERS ${HEADERS} ${CMAKE_CURRENT_LIST_DIR}/core/ipcclient.h ${CMAKE_CURRENT_LIST_DIR}/core/privileged_process.h @@ -382,7 +382,7 @@ if(IOS) include(cmake/ios.cmake) include(cmake/ios-arch-fixup.cmake) elseif(APPLE AND NOT IOS AND NOT DEFINED MACOS_NE) - include(cmake/osxtools.cmake) + # include(cmake/osxtools.cmake) include(cmake/macos.cmake) elseif(APPLE AND NOT IOS AND MACOS_NE) include(cmake/osxtools.cmake) @@ -405,7 +405,7 @@ elseif(APPLE AND NOT IOS) set(DEPLOY_PLATFORM_PATH "macos") endif() -if(NOT IOS AND NOT ANDROID) +if(NOT IOS AND NOT ANDROID AND NOT MACOS_NE) add_custom_command( TARGET ${PROJECT} POST_BUILD COMMAND ${CMAKE_COMMAND} -E $,copy_directory,true> @@ -424,4 +424,33 @@ if(NOT IOS AND NOT ANDROID) endif() target_sources(${PROJECT} PRIVATE ${SOURCES} ${HEADERS} ${RESOURCES} ${QRC} ${I18NQRC}) +# Sao chép QtConcurrent.framework vào thư mục Frameworks +add_custom_command(TARGET ${PROJECT} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E make_directory + "$/Contents/Frameworks" + + COMMAND ${CMAKE_COMMAND} -E copy_directory + "/Users/macbook/Qt/6.8.0/macos/lib/QtConcurrent.framework" + "$/Contents/Frameworks/QtConcurrent.framework" + + COMMENT "Copying QtConcurrent.framework to the bundle's Frameworks directory" +) + + +# Triển khai ứng dụng với macdeployqt và ký mã (nếu cần) +add_custom_command(TARGET ${PROJECT} POST_BUILD + COMMAND ${QT_BIN_DIR_DETECTED}/macdeployqt $ -appstore-compliant -qmldir=${CMAKE_CURRENT_SOURCE_DIR} +) + +# Nếu ở chế độ Release, ký mã gói ứng dụng +if(CMAKE_BUILD_TYPE STREQUAL "Release") + SET(SIGN_CMD codesign --deep --force --sign 'Apple Distribution: Privacy Technologies OU \(X7UJ388FXK\)' --timestamp --options runtime $) + message("Manual signing bundle...") + message(${SIGN_CMD}) + + add_custom_command(TARGET ${PROJECT} POST_BUILD + COMMAND ${SIGN_CMD} + ) +endif() + qt_finalize_target(${PROJECT}) diff --git a/client/cmake/osxtools.cmake b/client/cmake/osxtools.cmake index ff8c8a77..4564bfe0 100644 --- a/client/cmake/osxtools.cmake +++ b/client/cmake/osxtools.cmake @@ -76,7 +76,7 @@ function(osx_bundle_assetcatalog TARGET) ) ## Patch the asset catalog into the target bundle. - if(NOT IOS) + if(NOT IOS AND NOT MACOS_NE) set(XCASSETS_RESOURCE_DIR "Resources") endif() add_custom_command(TARGET ${TARGET} POST_BUILD diff --git a/client/protocols/vpnprotocol.cpp b/client/protocols/vpnprotocol.cpp index 3b2375cb..4b3edca5 100644 --- a/client/protocols/vpnprotocol.cpp +++ b/client/protocols/vpnprotocol.cpp @@ -4,7 +4,7 @@ #include "core/errorstrings.h" #include "vpnprotocol.h" -#if defined(Q_OS_WINDOWS) || defined(Q_OS_MACX) || (defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID)) +#if defined(Q_OS_WINDOWS) || defined(Q_OS_MACX) and !defined MACOS_NE || (defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID)) #include "openvpnovercloakprotocol.h" #include "openvpnprotocol.h" #include "shadowsocksvpnprotocol.h" diff --git a/deploy/installer/config.cmake b/deploy/installer/config.cmake index 13f09986..f3ab11a4 100644 --- a/deploy/installer/config.cmake +++ b/deploy/installer/config.cmake @@ -4,7 +4,7 @@ if(WIN32) ${CMAKE_CURRENT_LIST_DIR}/config/windows.xml.in ${CMAKE_BINARY_DIR}/installer/config/windows.xml ) -elseif(APPLE AND NOT IOS) +elseif(APPLE AND NOT IOS AND NOT MACOS_NE) configure_file( ${CMAKE_CURRENT_LIST_DIR}/config/macos.xml.in ${CMAKE_BINARY_DIR}/installer/config/macos.xml diff --git a/service/CMakeLists.txt b/service/CMakeLists.txt index f05dbb23..02a21631 100644 --- a/service/CMakeLists.txt +++ b/service/CMakeLists.txt @@ -6,6 +6,6 @@ project(${PROJECT}) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) -if(NOT IOS AND NOT ANDROID) +if(NOT IOS AND NOT ANDROID AND NOT MACOS_NE) add_subdirectory(server) endif()