2

google-api-cpp-clientライブラリの標準配布に含まれている特殊なYoutube APIを構築しようとしています。ドキュメントには次のように記載されています。

C++ ライブラリをダウンロードして、service_apisこの SDK のソース インストールのルートにあるディレクトリに解凍すると、デフォルトのビルド スクリプトによって自動的にビルドされます。

ただし、ビルド スクリプトはそうではありません。配布物に含まれるサンプルを構築すると、これが非常に明確になります。

Linking CXX executable ../../bin/calendar_sample
ld: library not found for -lgoogle_calendar_api

ルートの末尾はCMakeLists.txt次のようになります。

add_subdirectory(src)

if (googleapis_build_samples)
  set(googleapis_build_service_apis true)  # force on
endif()
if (googleapis_build_service_apis)
  add_subdirectory(service_apis)
endif()

# Build samples after the service apis
# but keep them under src
if (googleapis_build_samples)
  add_subdirectory(src/samples)
endif()

最終的にこの CMakeLists.txt につながります (service_apis ディレクトリのルートにあります):

file(GLOB all_valid_subdirs RELATIVE
          ${CMAKE_CURRENT_SOURCE_DIR} "*/CMakeLists.txt")

foreach(dir ${all_valid_subdirs})
    message(STATUS "path = ${dir}")
    if(${dir} MATCHES "^([^/]*)//CMakeLists.txt")
        string(REGEX REPLACE
               "^([^/]*)//CMakeLists.txt" "\\1" dir_trimmed ${dir})
        add_subdirectory(${dir_trimmed})
    endif()
endforeach(dir)

messageif ステートメント内に出力を入れました。add_subdirectoryコールが届かないようです。foreachただし、すべてのサブディレクトリを反復処理します。

正規表現の比較が失敗するのはなぜですか?

4

1 に答える 1

2

この質問を仕上げているときに、実際にエラーを見つけました。正規表現の比較には、余分なスラッシュが含まれています。次の正規表現は、ライブラリを正常にインクルードします。

^([^/]*)/CMakeLists.txt

開発者にバグを報告します。

于 2015-10-13T19:27:23.007 に答える