Make使用旧的Makefile

布拉姆

我正在使用make来构建C ++项目。在项目过程中,我想对Makefile进行一些更改。不幸的是,自从我执行一次make以来,它一直使用那个特定版本的Makefile,并且根本不做任何更改。

我已经运行make clean,我已经重命名了makefile,我搜索了其他可以代替使用的Makefile,但无济于事。在make的手册页中没有提及任何缓存机制,在Google的任何地方都没有提及。

有谁知道为什么make不使用新版本以及我该怎么做?我正在使用(GNU)make版本3.81的Ubuntu 12.04.2 LTS(x86_64)盒进行编译。

更新:一些其他信息。似乎make毕竟使用的是makefile的当前版本。如果我更改主要目标中的某些内容,则效果很好。但是,如果我更改obj /%。o目标中的内容,则无论我对该目标进行什么更改,它都将继续运行相同的命令。

完整的Makefile可以在这里找到:http : //pastebin.com/WK43NRcL

乔纳森·韦克利(Jonathan Wakely)
CC_FILES        = $(shell find -name "*.cc" -exec echo "{}" +;)

find命令不正确,是否应该在src目录中查找那为什么还要用它echo来打印名称find呢?

这表示您的清单,CC_FILES因此的清单也OBJ_FILES为空。

我想你要:

CC_FILES        := $(shell find src -name "*.cc")

请注意,这:=不会使用,=因为否则shell每次引用CC_FILES变量函数都会运行使用:=表示它仅运行和评估一次。

但是,由于似乎所有.cc文件都在同一个目录中,因此不需要递归find,只需执行以下操作:

CC_FILES := $(wildcard src/*.cc)

如您所知,您patsubst已经坏了,您可以执行以下操作:

OBJ_FILES := $(patsubst src/%.cc,obj/%.o,$(CC_FILES))

(再次,:=在这里使用

还:

obj/%.o: obj src/%.cc
    $(CXX) $(CFLAGS) -c -o $@ $<

我认为您需要阅读$<变量扩展到的内容,因为上面的规则不会满足您的期望。

这个makefile充满了错误,您需要echo在模式规则中使用以打印出变量的值,以便可以验证它们是否具有期望的值。(作为调试的另一个选项,设置SHELL=bash -x为回显每个shell命令)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用旧版GCC

来自分类Dev

使用旧的 Jmeter 版本

来自分类Dev

使用“ make”命令指定“ makefile”的路径

来自分类Dev

pytest 使用 Makefile 和 make 命令

来自分类Dev

使用旧版Ruby的Bundler

来自分类Dev

使用旧的(Whisker)Xfce菜单?

来自分类Dev

如何使用旧版GCC

来自分类Dev

使用#if使用旧/新方法代码

来自分类Dev

在shell脚本中使用makefile变量而不运行make

来自分类Dev

在Makefile的内置Shell函数中使用make变量

来自分类Dev

Makefile:使用'make -j'时如何控制部分编译顺序?

来自分类Dev

使用make run命令从Makefile中获取STDIN

来自分类Dev

如何判断Makefile中是否使用了GNU make?

来自分类Dev

在shell脚本中使用makefile变量而不运行make

来自分类Dev

如何在makefile中使用make安装或卸载?

来自分类Dev

如何强制OpenSSL使用旧密码

来自分类Dev

如何使用旧字符集

来自分类Dev

使用旧版本的jHipster

来自分类Dev

使用旧版Firefox进行测试

来自分类Dev

使用旧网站名称的Visual Studio 2013

来自分类Dev

使用旧的rubygems版本进行捆绑安装

来自分类Dev

Boto3使用旧的凭据

来自分类Dev

如何使用旧的MS Sans Serif字体

来自分类Dev

是否仍建议使用旧版Criteria API?

来自分类Dev

R如何知道不使用旧的'f'?

来自分类Dev

仍在使用旧的Grub装载机

来自分类Dev

飞镖nullsaftey和使用旧包

来自分类Dev

仍在使用旧的Grub装载机

来自分类Dev

您如何使用旧服务器?