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)
message
if ステートメント内に出力を入れました。add_subdirectory
コールが届かないようです。foreach
ただし、すべてのサブディレクトリを反復処理します。
正規表現の比較が失敗するのはなぜですか?