[英]How To Export Compiled Protobuf to Static Library C++
我想制作一個包含 .cc 和 .h 文件的靜態庫,這些文件是從 protoc 編譯器生成的,以便從其他項目鏈接到它,我正在使用 C++
您可以讓 CMake 編譯 proto 文件,而不是手動使用 protoc。 為此,您將 CMakeLists.txt 與 proto 文件放在同一個文件夾中(我在這里使用了一個名為 proto 的單獨文件夾)。 這個 CMakeLists.txt 看起來像:
# Proto files
set(proto
test.proto
# maybe others
)
# Generated sources
set(proto_srcs
${CMAKE_BINARY_DIR}/proto/test.pb.cc
# maybe others
)
# Generated headers
set(proto_hdrs
${CMAKE_BINARY_DIR}/proto/test.pb.h
# maybe others
)
add_custom_command(
OUTPUT ${proto_srcs} ${proto_hdrs}
COMMAND protoc
ARGS --cpp_out ${CMAKE_BINARY_DIR}/proto
-I ${CMAKE_SOURCE_DIR}/proto
${proto}
DEPENDS ${proto}
)
add_library(protos
${proto_srcs}
${proto_hdrs}
)
target_link_libraries(protos
libprotobuf
)
如您所見,您需要指定要編譯的 proto 文件(第一set
)。 然后您需要指定生成的 cc 和 h 文件的名稱(第二和第三set
)。 然后我們使用自定義命令自動生成您使用 protoc 手動執行的操作。
最后,我們使用 add_library 創建一個名為 protos_lib.a 的libprotos.a
(靜態庫)文件,並將 protobuf 依賴target_link_libraries
與add_library
鏈接。
希望對您有所幫助,如果您需要更多詳細信息,請告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.