2
我正在嘗試構建專門的Youtube API,它包含在google-api-cpp-client庫的標準分發中。該文件指出:在google-api-cpp-client中構建專門的服務API
如果你下載的C++庫,並將其解壓到
service_apis
目錄在源安裝的根此SDK,則默認構建腳本會自動生成它們。
但是,構建腳本沒有。構建分佈中包含的樣本可以很清楚地揭示這一點。
Linking CXX executable ../../bin/calendar_sample
ld: library not found for -lgoogle_calendar_api
根CMakeLists.txt
的尾部如下:
最終導致這個的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)
我在if語句中輸入message
輸出。看起來add_subdirectory
電話永遠不會到達。儘管如此,foreach
遍歷所有的子目錄。
爲什麼正則表達式比較失敗?
另一位不理解正則表達式的腳本作者。事實是'^([^ /] *)/ CMakeLists.txt'只會匹配'/ CMakeList.txt'之前的一個子目錄。組1還匹配'/ CMakeLists.txt'前面的空字符串,或者一堆空格(包括換行符) – sln
那麼'[\ S /] +/CMakeLists.txt'會更好嗎? – Thijs
那麼,不知道這個'GLOB ___ RELATIVE'是做什麼的,它是否可以包含'sub1/sub2/sub3'/CMakeLists.txt多個子目錄,或者一個。他正在使用錨點'^'和一個單獨的子過濾器'[^ /] +',它不會與多個的匹配。如果你想使用'^(。+)/ CMakeLists.txt'的倍數。如果你只想要一個,使用'^([^ /] +)/ CMakeLists.txt'對於這兩種方法,你可以用'^ \ s *('... – sln