c++ - 不同 Makefile 目标的不同变量集

标签 c++ c makefile

<分区>

我正在尝试为目前仅针对一种架构编译的现有 Makefile 添加一些灵 active 。我假设在我更改之前“全部”是默认目标 - 这是第一个没有点的目标,它被定义在大文件中间的某个地方。

我已经添加了

default_action: stm32f4target

在文件之上

stm32f4target: all

在文件底部,我假设这将“全部”包装在我的新默认“stm32f4target”任务中。仍然有效。

现在我想做一个现有的变量定义

USE_FPU = yes

以我的目标为条件,所以我将其更改为

stm32f4target: USE_FPU = yes

但这破坏了一切:我仍然在不带参数的情况下调用 make,我假设我的新 stm32f4target 是默认目标。我从我的 C 编译器收到一条消息,与 FPU 相关的宏被重新定义,这意味着我最后的更改改变了 Makefile 的行为,这是我没有预料到的。我在这里做错了什么?

最佳答案

据我所知,标准 make 无法在 make 执行期间有条件地设置变量。但作为一种变通方法,您可以对命令行上设置的变量使用递归 make 调用:

stm32f4target:
        $(MAKE) all USE_FPU=yes

命令行定义会覆盖 Makefile 变量,因此您可以根据需要在 Makefile 中保留默认的 USE_FPU=no。

关于c++ - 不同 Makefile 目标的不同变量集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27625809/

相关文章:

C++ 前向引用

c - 两个相似的循环 - 一个完美地工作,另一个则不然

c - 函数返回后esp的值是多少?

linux - 无法在 Linux 上安装 PAR::Packer 1.014

linux - 将 GNU make 生成的文件存储在别处

C++ VS2015 constexpr 编译错误,constexpr 构造函数调用 constexpr 成员函数

c++ - 为什么我们需要 std::initializer_list 的私有(private)构造函数?

c - 如何连接 GtkAction 信号?

linux - 如何在Makefile中测试CFLAGS中是否加入了某个符号?

c++ - 在 C++ 中反转结构数组