2012-04-11 203 views
2

我有一個makefile爲兩個類(和主)創建目標文件,其中一個類只是在.h文件中定義的。在我的makefile我有這樣一行如何在makefile中編譯.h文件?

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

但是當我嘗試編譯它說,它無法找到FileName.o

我必須爲了得到這個創建FileName.cpp編譯?

+3

一般來說,想要只編譯一個頭文件而不是'#include'將其包含到某個實際的源文件中意味着您需要重構您的代碼。或者可能完全重新思考。 – geekosaur 2012-04-11 19:48:25

+0

編譯是什麼生成的目標文件...你是否意味着當你嘗試鏈接? – AJG85 2012-04-11 19:48:49

回答

3

你在FileName.h某處使用你的類,不是嗎?因此,至少有一個.cpp文件應該包含#include "FileName.h",而.h的代碼將使用該.cpp編譯,而不需要單獨編譯.h的代碼。

+0

謝謝!這工作 – JDN 2012-04-11 20:10:54

4

您通常不會嘗試自行編譯頭文件(.h)。將它包含在一個空的.cpp文件中可以讓你編譯它並生成一個.o文件,但是它可能不會做太多(如果有的話)真正的好東西,除非你把東西放在不真正屬於的頭文件中在標題中。

+0

這個班真的很小,由朋友班操縱。即使它不是標準協議,是否有任何方法可以創建並從該.h文件中創建對象文件? – JDN 2012-04-11 19:54:03

+0

@JDN你應該在需要的地方包含.h。不需要單獨編譯它。 – Collin 2012-04-11 19:55:05