【问题标题】:C++: Creating a makefile with two executables? C++C++:创建一个包含两个可执行文件的makefile? C++
【发布时间】:2015-12-03 23:48:12
【问题描述】:

我有两个共享一个类的 C++ 程序。 progOne.cpp 和 progTwo.cpp。它们都与相应的 fileInfo.h 文件共享一个类 fileInfo.cpp。

这就是我尝试创建 makefile 的方式。

all: progOne.cpp progTwo.cpp

progOne: progOne.cpp fileInfo.cpp
    g++ progOne.cpp fileinfo.cpp -o progOne

progTwo: progTwo.cpp fileinfo.cpp
    g++ progTwo.cpp fileinfo.cpp -o progTwo.

我收到错误:make: nothing to be done for 'all'。

【问题讨论】:

  • all: progOne progTwo - 注意没有 .cpp - 这不是你的“目标”,而是你的源文件。
  • 为什么两个程序都需要一个makefile?是一个项目吗?仅仅因为共享两个文件不是一个很好的理由恕我直言
  • 正如@MatsPetersson 所说,注意您的目标和依赖项。如果您有 10 分钟的时间,请阅读 this!
  • @Mats Petersson 谢谢。现在似乎可以工作了。
  • 由于您的构建过程如此简单,您也可以完全依赖内置规则all: progOne progTwo progOne progTwo: fileInfo.o

标签: c++ makefile g++ executable


【解决方案1】:

你需要:

all: progOne progTwo

这告诉 make all 依赖于 progOneprogTwo。如果你使用all: progOne.cpp ...,那么如果progOne.cpp 已经存在,make 就不需要做任何事情,并且会说“nothing to be done for all”。

当然,接下来你要解释一下progOneprogTwo是如何依赖源文件的,这样当你更新源文件时,它会重建可执行文件。

您可能还想将 progOne.cpp 的任何头文件添加到依赖项中,例如progOne: progOne.cpp progOne.h - 如果progOne.h 被更新,程序会被重建。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多