簡體   English   中英

Makefile在多個目標規則中保留一些中間件

[英]Makefile keeps some intermediates in multiple target rule

我使用以下Makefile部分:

.PHONY: all
all: _MyModule.so

_%.so: %.pb.cc %.pb.h
    python setup.py build

%.pb.cc %.pb.h: %.proto
    protoc --cpp_out=. $^  # Generate these two files together

我希望make創建_MyModule.so文件並刪除中間體MyModule.pb.ccMyModule.pb.h 在實踐中發生的事情是只刪除其中一個文件( .h.cpp )。 我還注意到它依賴於它們在_%.so中的外觀順序_%.so依賴列表。

有誰能解釋這種行為?

我怎樣才能優雅地去除所有中間體?

有多奇怪。 我會站出來說這看起來像是GNUMake中的一個錯誤。 具有多個目標的模式規則具有特殊行為,並且似乎此行為與中間文件的處理.INTERMEDIATE (並且.INTERMEDIATE沒有幫助)。

我不會稱這是一個優雅的解決方案,但它的工作原理:

%.pb.cc: %.pb.h
    @:

%.pb.h: %.proto
    ...

PS結果證明這是一個已知的錯誤

暫無
暫無

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

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