linux - MakeFile 不像可执行文件那样发光

标签 linux unix makefile g++ findname

这是我在 makefile 中编写的代码。由于某种原因,它不允许我执行 make 函数。当我输入“make findName”时,我得到“make:'findName'是最新的。”

findName:       findName.cpp
        g++ -g findName.cpp -o findName;

clean:
        /bin/rm -f findName *.o

backup:
        #tar -zcvf bbrown.assignment4_1.tar.gz *.cpp *.h makeFile readme # will make a tar.gz
        tar -cvf bbrown.findName.tar *.cpp *.sh makeFile readme

最佳答案

诸如“make:'target'已更新”之类的消息。意味着 make 根据所涉及文件的时间戳决定不需要运行任何命令。 make 程序认为文件(和虚假目标)具有先决条件树,并且仅当文件不存在或具有比其先决条件之一旧的时间戳时,才会运行与创建文件相关的命令。在大型项目中,这有助于避免完全重建所有内容,这可能会花费大量时间,而实际上只有少数源文件发生了变化:make将确定实际需要哪些命令。但这确实需要设置具有准确先决条件的 Makefile

您的Makefile 指定文件findName 有一个先决条件:findName.cpp。如果 make 成功创建 findName,那么您无需执行任何其他操作,只需再次键入 make,您就会看到“最新”消息:这是一项功能。如果编辑并保存 findName.cpp,然后运行 ​​make,它应该重复 g++ 命令。

但假设您还有一些来自 findName.cpp 的头文件,例如 findName.h。如果您编辑并保存 findName.h,然后运行 ​​make,您将获得“最新”信息,因为 make 不知道 findName.hfindName 有影响。您需要添加先决条件来解决此问题:

findName:       findName.cpp findName.h
        g++ -g findName.cpp -o findName

有多种方法可以自动处理此类 header 依赖项,但它们需要更高级地使用 make 和/或使用其他构建工具。

关于linux - MakeFile 不像可执行文件那样发光,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60291154/

相关文章:

linux - gcc '-c'和gcc '-o'是什么意思?

linux - 我如何知道Linux中的套接字连接(tcp或udp)已经建立了多长时间?

linux - 安装 OpenCV 时出错

linux - 同时打印两行

linux - 我不断收到此错误消息 : del: line 13: syntax error: unexpected end of file

ruby-on-rails - 为 Ruby on Rails 安装 Unix 安装程序

c++ - 使用 Xinput2 获取双 RawKeyPress 事件

python - 如何使用 Python 设置文件的 ctime?

gcc - 在 GCC makefile 的目标中允许空间

c++ - 在 Makefile 中解决依赖关系的常用方法是什么?