Makefile:获取“‘目标’是最新的”

问题描述 投票:0回答:2

我为一些c 文件制作了makefile。我在互联网上看到了太多的方法,但我总是遇到同样的问题:运行 make,我被告知:

make: `q_a' is up to date.

我的

Makefile
包含:

q_a: 
gcc -o q_a quick_sort_i.c

q_g: 
gcc -o q_g quick_sort_g.c

s_a: 
gcc -o s_a shell_sort_i.c

s_g: 
gcc -o s_g shell_sort_g.c

fork: 
gcc -o fork fork.c

我的文件夹中没有与目标同名的文件,当我在终端中手动输入它们时,我可以成功执行编译命令。

makefile build-dependencies build-target
2个回答
13
投票

您尚未指定目标的依赖项。

make 的作用是首先检查您的目标 (

q_a
) 是否作为文件存在,如果存在,则其依赖项是否比您的目标更新(例如,具有更新的修改时间)。仅当需要更新(不存在或依赖项较新)时,才会执行规则。

这意味着,如果每次

q_a
更改时都需要重新编译
quick_sort_i.c
,则需要将其添加为
q_a
的依赖项,如下所示:

q_a: quick_sort_i.c
    gcc -o q_a quick_sort_i.c

这样,如有必要,make 将重新编译

q_a


0
投票

实际上并不是一个错误;它表明目标 mpi_wavefront 已经构建并且没有任何需要重建目标的更改。本质上,make 认为编译的输出相对于源文件 mpi_wavefront.cpp 是最新的。

make clean make mpi_wavefront

© www.soinside.com 2019 - 2024. All rights reserved.