C Makefile 头文件和 cpp

新手上路,请多包涵

我正在尝试创建一个 Makefile,但我真的很挣扎。我有 3 个文件; main.cpp、garage.cpp 和garage.hpp。以下命令有效,但我不知道如何将其转换为生成文件。任何帮助将不胜感激。 -std=c++0x 很重要,因为如果我删除它并用其他东西替换它,它将无法编译。再次感谢。

在职的

g++ -std=c++0x -Wall -o main main.cpp garage.hpp garage.cpp

原文由 Carl 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 443
1 个回答

仅供参考,将头文件( garage.hpp )添加到编译/链接行是不对的。只有源文件( .cpp )应该放在编译行。

@gowrath 的解决方案很容易理解,但它与您的命令行解决方案完全相同:它没有利用 make 的任何功能。编写一个 shell 脚本或别名来执行此操作比使用 makefile 更容易。

@Rahul 的解决方案说明了所有内容,但没有利用 make 的任何功能,这些功能可以让您在编写 makefile 时减少输入或工作量。

Make 实际上有大量的内置规则。为了自定义它们,您只需设置标准变量的值,其余的由 make 完成。你可以写这个makefile:

 CXX = g++
CXXFLAGS = -std=c++0x -Wall

OBJECTS = main.o garage.o

main: $(OBJECTS)
        $(CXX) $(CXXFLAGS) -o $@ $^

$(OBJECTS): garage.hpp

链接规则使用 自动变量 来避免重新键入目标 ( main ) 或先决条件 ( main.o , garage.o )。

最后一行确保如果 garage.hpp 文件更改,make 知道它必须重新编译源文件。您不必编写规则来告诉 make 如何 编译源文件:它已经知道如何去做。

原文由 MadScientist 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题