针对不同生成文件目标的不同变量集
different sets of variables for different Makefile target
我正在尝试为现有的Makefile添加一些灵活性,该Makefile目前仅针对一种架构进行编译。我假设在我更改之前,"all"是默认目标 - 这是第一个没有点的目标,它在大文件中间的某个地方定义。
我已添加
default_action: stm32f4target
在文件顶部和
stm32f4target: all
到文件底部,我假设这会将"全部"包装在我的新默认"stm32f4target"任务中。仍然有效。
现在我想做一个现有的变量定义
USE_FPU = yes
条件为我的目标,所以我将其更改为
stm32f4target: USE_FPU = yes
但这破坏了一切:我仍然在没有参数的情况下调用 make,我假设我的新 stm32f4target 是默认目标。我从我的 C 编译器收到一条消息,指出与 FPU 相关的宏被重新定义,这意味着我的最后一次更改改变了我没想到的 Makefile 的行为。我在这里做错了什么?
据我所知,标准制作中没有办法在 make 执行期间有条件地设置变量。但作为解决方法,您可以使用递归 make 调用,并在命令行上设置该变量:
stm32f4target:
$(MAKE) all USE_FPU=yes
命令行定义会覆盖生成文件变量,因此您可以根据需要在生成文件中保留默认的 USE_FPU=no。
如果你使用的是 gnu-make,你可以使用 eval
函数为变量赋值
stm32f4target:
$(eval USE_FPU=yes)
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 将数组的地址分配给变量并删除
- 为"adjacent"变量赋值时出现问题
- enum是C++中的宏变量还是整数变量
- 我应该如何在没有变量的情况下将相同的参数传递给 CMAKE 中的多个目标?
- 使用 gtest 框架在单元测试代码中检查目标对象的私有变量的最佳实践是什么?
- 如果输入类型与目标类型不同,"cin"变量是否重置为某个默认值?
- 目标-C 变量布局
- Google Mock:在目标类的构造函数中实例化的模拟私有变量成员
- 如何在不定义目标变量大小的情况下逐个字符将字符串变量复制到另一个字符
- 目标C C++ if(cin >>变量) 等价
- 在数组中查找一个变量,哪个和最接近目标和
- 在c++中将只读变量更改为目标
- 针对不同生成文件目标的不同变量集
- 如何定义一个变量,然后在目标[Makefile]中编译
- GNU Make -在规则/目标中设置shell命令输出中的MAKEFILE变量
- 根据Makefile中的目标更改变量
- 如何设置一个目标后的变量
- 目标 C - 使用局部变量声明的dispatch_apply无法在方法实现中编译C++