2013-02-04 18 views
7

Protokol arabellek .proto dosyalarını .pb.cc, .pb.h dosyalarına derlemem gerekiyor. Bu dönüşüm için bir program var.CMake: Özel genel derleme kuralı nasıl eklenir?

protoc test.proto --cpp_out . 

Böyle bir genel kuralı cmake'ye nasıl ekleyebilirim? Bunu add_custom_command ile yapabilirim. Ama her bir propro dosyası için buna ihtiyacım var. Bunu yapmanın daha iyi bir yolu var mı?

+0

Merhaba Mohammad, Fraser'in cevabı doğru, lütfen onaylayın. – guinny

cevap

6

CMake'in FindProtobuf modülünün bu işlevselliği PROTOBUF_GENERATE_CPP işlevi aracılığıyla sağladığı anlaşılıyor.

Tek bir çağrıda birden fazla .proto dosyası, örn.

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

Not find_package(Protobuf) çağırır CMakeLists.txt dosyası üst düzey bir fonksiyonu çağırmak CMakeLists.txt dosya (lar) ile aynı dizinde olması gerekir olabileceğini olsalar dahi bu. proto dosyaları.

+6

Sadece genişletmek için, $ {ProtoSources} ve $ {ProtoHeaders}, sırasıyla .pb.cc ve .pb.h dosyalarını içeren değişkenlerdir. Doğrudan add_library() ve add_executable() işlevlerinde kullanılabilirler. – psalvaggio

İlgili konular