簡體   English   中英

如何有條件地將文件包含到Makefile中?

[英]How to conditionally include a file into Makefile?

考慮以下Makefile:

# <include global configuration Makefile>

INCL = -I../include \
       -I<whatever>

CPPFLAGS=$(DEFS) $(INCL)
CXXFLAGS = -O0 -g -Wall -fmessage-length=0

SRCS = $(wildcard *.cpp)

OBJS = $(SRCS:.cpp=.o)

all: $(OBJS)

%.o: %.cpp
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<


depend: .depend

.depend: $(SRCS) 
    $(CPP) $(CPPFLAGS) -M $^ > $@

clean:
    rm -f $(OBJS)
    rm .depend


-include .depend

此Makefile使用g++ -M命令創建#include依賴關系鏈,並包含它。 這可能是一個相當漫長的過程。 問題是,即使調用make clean ,也會生成此文件,無論如何都會刪除此文件。 是否有條件地包含此文件,如果運行干凈的目標,不打擾創建它?

像這樣的東西:

ifneq ($(MAKECMDGOALS),clean)
-include .depend
endif

有關詳細信息,請參閱目標上制作手冊頁

編輯: -include不能縮進制表符,否則會被忽略。

您可以在編譯期間免費 (即,無運行時成本)執行此類依賴項。 當您運行clean ,依賴項自然不會重新生成。 請參閱Paul Smith的高級自動依賴生成論文中的“ 組合編譯和依賴關系生成 ”一節。

暫無
暫無

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

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