通过makefile读取/写入文件

时间:2018-10-18 18:27:17

标签: file makefile version-control gnu-make

因此,我有一个 makefile1 ,该调用另一个 makefile2 来编译项目。我在项目中的一个.c文件中设置了一些C定义,它们通过GLOBAL_DEFINES make变量(在makefile2中)传递,该变量在调用编译器时扩展为“ -D…”。我将值传递给那些C定义作为makefile1的参数(make param1 = XX param2 = YY),虽然效果很好,但是当我不提供此参数并且仅运行 make 时,编译无法抱怨 param1 =和param2 =未定义。任何想法如何优雅地处理这个问题。

这是我实际的有效命令

  

make FW_VERSION_MAJOR = 33 FW_VERSION_MINOR = 4

我要在这里实现的是:我应该能够成功运行make,make param1 = XX和make param2 = YY。一种方法是将这些#define写入测试文件,以便当我运行不带参数的make时它从文件中获取param1和param2的值,如果我应用这些params,它将在文件中覆盖它们。这是处理此问题的最佳方法吗?如果是,有人可以在右边引导我 方向。

make --version
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for x86_64-pc-linux-gnu

1 个答案:

答案 0 :(得分:0)

您可以在第一个Makefile中使用条件变量赋值运算符(在gnu make doc中有点隐藏):

FW_VERSION_MAJOR ?= x.x.x

这样,如果未定义FW_VERSION_MAJOR(通过命令行分配),它将获得默认值,编译将继续进行。

它的优点是不需要更改或添加源代码。