问题 1 如果您定义步骤
22 clean:
23 rm $(OBJECTS)
如果有什么方法可以优雅地“什么都不做,如果没有什么要删除”?
问题2 再次假设以下行,当处理行时找不到文件时,是否有办法优雅退出
6 SOURCES = $(shell echo src/*.cpp)
问题 3
如何对最终产品进行最终后处理,例如mv $(PRODUCT) someDir
?这个指令在哪里?
问题 1 如果您定义步骤
22 clean:
23 rm $(OBJECTS)
如果有什么方法可以优雅地“什么都不做,如果没有什么要删除”?
问题2 再次假设以下行,当处理行时找不到文件时,是否有办法优雅退出
6 SOURCES = $(shell echo src/*.cpp)
问题 3
如何对最终产品进行最终后处理,例如mv $(PRODUCT) someDir
?这个指令在哪里?
1)只需使用rm -f
,rm
如果文件丢失,则忽略它。
3) 这可能只是实际构建产品的目标的最后一步,或者您可以创建一个名为install
(例如)的目标,该目标取决于您的构建目标,然后包含此mv
命令。
回答问题 #2:
SOURCES := $(or $(wildcard src/*.cpp), $(warning No source found in 'src'))
当没有匹配src/*.cpp
模式的文件时,这将发出警告。SOURCES
变量保持为空。
请参阅 GNU Make 手册中的相应章节。