簡體   English   中英

如何將編譯好的 Protobuf 導出到靜態庫 C++

[英]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_librariesadd_library鏈接。

希望對您有所幫助,如果您需要更多詳細信息,請告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM