On Mon, Nov 17, 2008 at 17:02, codeazure <[EMAIL PROTECTED]> wrote:
> Has anyone devised a makefile rule for the .protoc->.cc->.o sequence?
> This appears to work well, but I was hoping it is possible to define
> a .proto.cc rule to automate it by some cleverness. My project uses
> Automake & it is easy to define custom make rules for different
> extensions.

I've been using the following, which works well in GNU make[1].  I'm
using a non-recursive makefile[2], and have a separate directory tree
under $GENDIR for all generated files (.o, .pb.cc, etc).  I sort of
use that to good effect in making sure the regular rule for cc files
won't apply accidentally, because the pb.cc files are in a different

# Make a directory unless it already exists
maybe-mkdir = $(if $(wildcard $1),,mkdir -p $1)

# C++ build rule.
$(GENDIR)/%.o: %.cc
        $(call maybe-mkdir, $(dir $@))
        $(CC) $(CFLAGS) -c $< -o $@

# Protobuffer code generation rules (note the first rule has multiple targets).
$(GENDIR)/%.pb.h $(GENDIR)/%.pb.cc: %.proto
        $(call maybe-mkdir, $(dir $@))
        $(PROTOC) -I. --cpp_out=$(GENDIR) $<

$(GENDIR)/%.pb.o: $(GENDIR)/%.pb.cc
        $(CC) $(PROTO_CFLAGS) -c $< -o $@

[1] Rule #1, http://make.paulandlesley.org/rules.html
[2] Recursive make considered harmful,

You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To post to this group, send email to protobuf@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 

Reply via email to