cmake_minimum_required(VERSION 3.10) project(ZoomWhisperBot) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # SDK パス(環境変数または相対パスで指定) if(DEFINED ENV{ZOOM_SDK_PATH}) set(ZOOM_SDK_DIR $ENV{ZOOM_SDK_PATH}) else() # デフォルト: プロジェクトルートの sdk ディレクトリを想定 get_filename_component(PROJECT_ROOT "${CMAKE_CURRENT_SOURCE_DIR}" DIRECTORY) set(ZOOM_SDK_DIR "${PROJECT_ROOT}/sdk") endif() # ヘッダーファイルのパス set(ZOOM_SDK_INCLUDE_DIR "${ZOOM_SDK_DIR}/h") include_directories(${ZOOM_SDK_INCLUDE_DIR}) include_directories(${ZOOM_SDK_INCLUDE_DIR}/rawdata) include_directories(${ZOOM_SDK_INCLUDE_DIR}/meeting_service_components) # ライブラリファイルのパス set(ZOOM_SDK_LIB_DIR "${ZOOM_SDK_DIR}") link_directories(${ZOOM_SDK_LIB_DIR}) # Qt5 ライブラリのパス(SDKに同梱) set(QT_LIB_DIR "${ZOOM_SDK_DIR}/qt_libs/Qt/lib") link_directories(${QT_LIB_DIR}) # 必要なシステムライブラリ find_package(Threads REQUIRED) find_package(PkgConfig REQUIRED) find_package(OpenSSL REQUIRED) # Boost ライブラリ(websocketpp の依存) # CMake 3.31以降ではFindBoostが非推奨のため、ポリシーを設定 if(POLICY CMP0167) cmake_policy(SET CMP0167 OLD) # FindBoostモジュールを使用 endif() # Boostを検索(ヘッダーのみでも可、websocketppはヘッダーオンリーライブラリ) set(Boost_USE_STATIC_LIBS OFF) set(Boost_USE_MULTITHREADED ON) find_package(Boost QUIET COMPONENTS system thread) if(NOT Boost_FOUND) # Boostが見つからない場合、ヘッダーのみを探す find_path(BOOST_INCLUDE_DIR NAMES boost/system.hpp PATHS /usr/include /usr/local/include ) if(BOOST_INCLUDE_DIR) message(STATUS "Found Boost headers at: ${BOOST_INCLUDE_DIR}") set(Boost_FOUND TRUE) set(Boost_INCLUDE_DIRS ${BOOST_INCLUDE_DIR}) include_directories(${BOOST_INCLUDE_DIR}) else() message(FATAL_ERROR "Boost not found. Please install it with:\n" " sudo apt install -y libboost-system-dev libboost-thread-dev\n" "Or set BOOST_ROOT environment variable." ) endif() else() message(STATUS "Found Boost: ${Boost_VERSION}") include_directories(${Boost_INCLUDE_DIRS}) endif() # websocketpp の検索(通常は /usr/include または vcpkg など) # インストールされていない場合は、手動でパスを指定 find_path(WEBSOCKETPP_INCLUDE_DIR NAMES websocketpp/config/asio_no_tls_client.hpp PATHS /usr/include /usr/local/include /usr/local/include/websocketpp # websocketpp/websocketpp/ 構造の場合 ${CMAKE_CURRENT_SOURCE_DIR}/third_party/websocketpp ${CMAKE_CURRENT_SOURCE_DIR}/third_party/websocketpp/websocketpp ) if(WEBSOCKETPP_INCLUDE_DIR) include_directories(${WEBSOCKETPP_INCLUDE_DIR}) message(STATUS "Found websocketpp at: ${WEBSOCKETPP_INCLUDE_DIR}") else() message(WARNING "websocketpp not found. Please install it or set WEBSOCKETPP_INCLUDE_DIR") # GitHub からクローンする場合の例: # git clone https://github.com/zaphoyd/websocketpp.git third_party/websocketpp endif() # ソースファイル set(SOURCES main.cpp ) # 実行ファイルの作成 add_executable(ZoomSDKDemo ${SOURCES}) # リンクするライブラリ target_link_libraries(ZoomSDKDemo # Zoom SDK ライブラリ meetingsdk cml mpg123 # Qt5 ライブラリ(SDKに同梱、直接リンク) ${QT_LIB_DIR}/libQt5Core.so.5 ${QT_LIB_DIR}/libQt5Gui.so.5 ${QT_LIB_DIR}/libQt5Widgets.so.5 ${QT_LIB_DIR}/libQt5Network.so.5 ${QT_LIB_DIR}/libQt5Qml.so.5 ${QT_LIB_DIR}/libQt5Quick.so.5 ${QT_LIB_DIR}/libQt5DBus.so.5 ${QT_LIB_DIR}/libQt5X11Extras.so.5 ${QT_LIB_DIR}/libQt5XcbQpa.so.5 # Boost(ライブラリが見つかった場合のみリンク) # websocketppはヘッダーオンリーライブラリなので、Boostのヘッダーがあれば動作します $<$:$<$:${Boost_LIBRARIES}>> # システムライブラリ Threads::Threads pthread dl X11 Xtst asound nss3 GL # OpenSSL (JWT生成用) OpenSSL::SSL OpenSSL::Crypto ) # 実行時のライブラリパス設定 set_target_properties(ZoomSDKDemo PROPERTIES INSTALL_RPATH "${ZOOM_SDK_LIB_DIR}:${QT_LIB_DIR}" BUILD_WITH_INSTALL_RPATH TRUE ) # デバッグ情報 message(STATUS "Zoom SDK Directory: ${ZOOM_SDK_DIR}") message(STATUS "Zoom SDK Include: ${ZOOM_SDK_INCLUDE_DIR}") message(STATUS "Zoom SDK Lib: ${ZOOM_SDK_LIB_DIR}")