linux - 更新 makefile 标签中的变量

标签 linux makefile

我有 C++ 静态库和使用它们的可执行文件,每个都在一个单独的文件夹中。每个这样的项目都可以在调试或发布配置中构建,当文件层次结构如下所示时: Static_Lib1\Debug\staticlib1.a
Static_Lib1\Release\staticlib1.a
//所有其​​他静态库都一样
可执行\调试\可执行
可执行\发布\可执行

所有 Debug 和 Release 文件夹都包含 makefile。
我正在尝试编写一个外部 makefile 来调用每个内部项目,使用选定的配置 - 调试或发布。
所以,我尝试了类似的方法:

CFG= #empty declaration  
PROJECTS=Static_Lib1 Static_Lib2 ... Executable
all:  
  release #default config is release  

release:  
  CFG = Release  
  make build-all  

debug:  
  CFG = Debug  
  make build-all  

build-all:  
  make clean  
  $(foreach projectName, $(PROJECTS), cd $(projectName)/$(CFG) && make all;)

但是我在尝试运行 make debug 时得到了这个输出:

CFG = Debug  
make: CFG: Command not found  
make: *** [debug] Error 127 

我该如何解决这个问题?
我的操作系统是 SLED 11x64。

提前致谢!

最佳答案

将其更改为:

...

release:  
  make CFG=Release build-all  

debug:  
  make CFG=Debug build-all  

...

关于linux - 更新 makefile 标签中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4920184/

相关文章:

ubuntu - 无法 `make install` ovs

c++ - 使用 linux g++ 编译器在 makefile 中创建静态库

linux - 我如何将进程的输入文本和输出文本捕获到文件中,就像从 shell 运行时显示的那样

c - 写入返回值 c

linux - 使用 perl 将文本文件中的字符替换为其他字符

c - 汇编 x86 中的 Math.h 库函数?

Makefile中我们可以在目标行上添加注释吗?

java - Java中运行DOS命令的问题

makefile - 从规则中设置变量

c - 使用 syslog 函数将日志值插入数据库