2013-02-04 32 views
7

Tôi cần biên dịch bộ đệm giao thức .proto tệp thành tệp .pb.cc, .pb.h. Có một chương trình cho chuyển đổi này.CMake: Cách thêm quy tắc biên dịch chung tùy chỉnh?

protoc test.proto --cpp_out . 

Làm cách nào để thêm quy tắc chung trong cmake? Tôi có thể làm điều này với add_custom_command. Nhưng tôi phải làm điều này cho mọi tệp .proto. Có cách nào tốt hơn để làm điều này?

+0

Hi Mohammad, câu trả lời của Fraser là chính xác, vui lòng xác nhận nó. – guinny

Trả lời

6

Có vẻ như mô-đun FindProtobuf của CMake cung cấp chức năng này thông qua chức năng PROTOBUF_GENERATE_CPP.

Bạn có thể chuyển nhiều tệp .proto trong một cuộc gọi, ví dụ:

file(GLOB ProtoFiles "${CMAKE_CURRENT_SOURCE_DIR}/*.proto") 
PROTOBUF_GENERATE_CPP(ProtoSources ProtoHeaders ${ProtoFiles}) 

Lưu ý rằng mặc dù các tập tin CMakeLists.txt trong đó kêu gọi find_package(Protobuf) có thể là top-level one party file CMakeLists.txt (s) mà gọi hàm sẽ cần phải được trong cùng thư mục với các. các tệp proto.

+6

Chỉ cần mở rộng, $ {ProtoSources} và $ {ProtoHeaders} là các biến chứa các tệp lần lượt là .pb.cc và .pb.h. Chúng có thể được sử dụng trực tiếp trong các hàm add_library() và add_executable(). – psalvaggio

Các vấn đề liên quan