gpt4 book ai didi

c++ - 为什么这个简单的 makefile 不在更改时重建源代码?

转载 作者:行者123 更新时间:2023-11-30 01:09:19 24 4
gpt4 key购买 nike

我写了这个简单的 makefile,在我想做一些更改并将它们应用到二进制文件之前,它工作正常。然后我需要再次“清理”和“制作”,因为 obj.文件不会被重建。虽然到目前为止这似乎是一项简单的任务,但我未能修改它以制作 obj。隐式重建文件(因此我在修改源代码时只能写“make”)。

COMPILER=g++-5.3
CXXFLAGS=-std=c++11 -O2 -pedantic

build : a.o
$(COMPILER) a.o -o a

a.o:
$(COMPILER) $(CXXFLAGS) -c a.cpp -o a.o

clean :
rm -f *.o *~ a

编辑:我尝试了 Omada 建议的更改(在我写这个问题之前我自己也尝试过),结果是:

me@pc: ~/mypath$ cat a.cpp
#include <iostream>
int main(int argc, char* argv[])
{
if ( argc!=2 ){
std::ceaaarr<<"Prrogram expects 1 argument\n";
return 1;
}
return 0;
}me@pc: ~/mypath$ make
g++-5.3 a.o -o a
me@pc: ~/mypath$ cat Makefile
#init

COMPILER=g++-5.3
CXXFLAGS=-std=c++11 -O2 -pedantic

build: a.o
$(COMPILER) a.o -o a

a.o: a.cpp
$(COMPILER) $(CXXFLAGS) -c a.cpp -o a.o

clean:
rm -f *.o *~ a

最佳答案

因为您从未告诉 makefile a.o 依赖于 a.cpp,所以当 a.cpp 时它将无法确定> 更改,它应该重建 a.o

修复此更改

a.o:
$(COMPILER) $(CXXFLAGS) -c a.cpp -o a.o

对此

a.o: a.cpp
$(COMPILER) $(CXXFLAGS) -c a.cpp -o a.o

如果它不起作用请告诉我,我的 makefile 有点生疏了。

关于c++ - 为什么这个简单的 makefile 不在更改时重建源代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40566444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com