Oli*_*ver 24 makefile gnu-make
我有一个makefile,它在命令行中获取选项
make OPTION_1=1
Run Code Online (Sandbox Code Playgroud)
根据该值,它将向对象子集添加其他编译器定义.
ifeq ($(OPTION_1), 1)
CC_FLAGS += -DOPTION_1_ON
endif
Run Code Online (Sandbox Code Playgroud)
定义中的更改会影响包含的头文件内容 - 存根或实现会暴露给目标文件.
如何通过此选项更改来重建受影响的文件?
slo*_*dog 43
我用一个文件来记住这些选项的最后一个值,如下所示:
.PHONY: force
compiler_flags: force
echo '$(CC_FLAGS)' | cmp -s - $@ || echo '$(CC_FLAGS)' > $@
Run Code Online (Sandbox Code Playgroud)
该cmp || echo位表示compiler_flags仅在设置更改时才触摸文件,因此现在您可以编写类似的内容
$(OBJECTS): compiler_flags
Run Code Online (Sandbox Code Playgroud)
$(OBJECTS)在编译器标志发生变化时重建.每次运行make时都会执行compiler_flags规则,但$(OBJECTS)只有compiler_flags在实际修改文件时才会触发重建.
| 归档时间: |
|
| 查看次数: |
6833 次 |
| 最近记录: |