# Light helpers library expected to be used by all other libraries # cmake_minimum_required(VERSION 3.21) project(StatusGoQt VERSION 0.1.0 LANGUAGES CXX) set(QT_NO_CREATE_VERSIONLESS_FUNCTIONS true) find_package(nlohmann_json 3.10.5 REQUIRED) find_package(Boost) find_package(Qt6 ${STATUS_QT_VERSION} COMPONENTS Core Concurrent Gui REQUIRED) qt6_standard_project_setup() add_library(${PROJECT_NAME} SHARED) # Use by linker only set_property(GLOBAL PROPERTY DEBUG_CONFIGURATIONS Debug) target_link_libraries(${PROJECT_NAME} PUBLIC Status::Helpers Boost::headers PRIVATE Qt6::Gui Qt6::Core Qt6::Concurrent nlohmann_json::nlohmann_json statusgo_shared ) add_library(Status::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) target_include_directories(${PROJECT_NAME} PRIVATE src/StatusGo # TODO: Workaround to QML_ELEMENT Qt6 INTERFACE src/StatusGo PUBLIC src ) add_subdirectory(tests) # Copy status-go lib close to the executable # Temporary workaround; TODO: see a better alternative that doesn't depend on target order (dedicated dependencies dir?) # and current directory (on mac). Use bundle or set rpath relative to executable get_target_property(STATUSGO_LIBRARY_PATH statusgo_shared IMPORTED_LOCATION) add_custom_command( TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:statusgo_shared> ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} COMMENT "Copying status-go lib beside project executable" ) install( IMPORTED_RUNTIME_ARTIFACTS statusgo_shared ) if(CMAKE_SYSTEM_NAME MATCHES "Linux") add_custom_command( TARGET ${PROJECT_NAME} POST_BUILD # Workaround, status-go CMakeLists.txt should set the correct TARGET_SONAME_FILE COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_SONAME_FILE:statusgo_shared>/libstatus.so.0 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} COMMENT "Copying status-go libstatus.so.0 lib beside project executable" ) install( FILES $<TARGET_SONAME_FILE:statusgo_shared>/libstatus.so.0 TYPE LIB ) endif() target_sources(${PROJECT_NAME} PRIVATE src/StatusGo/General.h src/StatusGo/General.cpp src/StatusGo/Types.h src/StatusGo/Utils.h src/StatusGo/Utils.cpp src/StatusGo/Accounts/Accounts.h src/StatusGo/Accounts/Accounts.cpp src/StatusGo/Accounts/accounts_types.h src/StatusGo/Accounts/AccountsAPI.h src/StatusGo/Accounts/AccountsAPI.cpp src/StatusGo/Accounts/ChatOrWalletAccount.h src/StatusGo/Accounts/ChatOrWalletAccount.cpp src/StatusGo/Chat/ChatAPI.h src/StatusGo/Chat/ChatAPI.cpp src/StatusGo/Chat/ChatDto.h src/StatusGo/Chat/ChatDto.cpp src/StatusGo/Messenger/Service.h src/StatusGo/Messenger/Service.cpp src/StatusGo/Metadata/api_response.h src/StatusGo/Metadata/api_response.cpp src/StatusGo/SignalsManager.h src/StatusGo/SignalsManager.cpp src/StatusGo/Settings/SettingsAPI.h src/StatusGo/Settings/SettingsAPI.cpp src/StatusGo/Settings/SettingsDto.h src/StatusGo/Settings/SettingsDto.cpp src/StatusGo/Wallet/BigInt.h src/StatusGo/Wallet/BigInt.cpp src/StatusGo/Wallet/DerivedAddress.h src/StatusGo/Wallet/NetworkConfiguration.h src/StatusGo/Wallet/Token.h src/StatusGo/Wallet/SavedAddress.h src/StatusGo/Wallet/wallet_types.h src/StatusGo/Wallet/WalletApi.h src/StatusGo/Wallet/WalletApi.cpp )