【问题标题】:How do you compile just a .h file in a makefile?你如何在 makefile 中只编译一个 .h 文件?
【发布时间】:2012-04-11 19:45:15
【问题描述】:

我有一个为两个类(和主类)创建目标文件的生成文件,其中一个类只是在 .h 文件中定义。在我的makefile中,我有一行说

FileName.o: FileName.h
  g++ -c FileName.h

但是当我尝试编译时它说找不到 FileName.o

我是否必须创建 FileName.cpp 才能编译?

【问题讨论】:

  • 一般来说,认为你只想编译一个头文件而不是#include将它编译成一些实际的源文件意味着你需要重构你的代码。或者也许完全重新考虑它。
  • 编译是生成目标文件的原因...您是在尝试链接时的意思吗?

标签: c++ makefile g++


【解决方案1】:

您正在某个地方使用 FileName.h 中的类,不是吗?所以至少你的一个.cpp文件应该包含#include "FileName.h",.h的代码将用这个.cpp编译,你不需要单独编译.h的代码。

【讨论】:

    【解决方案2】:

    您通常不会尝试自行编译头文件 (.h)。将它包含到一个空的 .cpp 文件中可以让你编译它并生成一个 .o 文件,但它可能不会做太多(如果有的话)真正的好处,除非你把东西放在不真正属于的标题中在标题中。

    【讨论】:

    • 班级真的很小,由朋友班级操作。即使它不是标准协议,是否有任何方法可以从该 .h 文件创建和对象文件?
    • @JDN 您应该只在需要的地方包含 .h 。无需单独编译。
    猜你喜欢
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    相关资源
    最近更新 更多