C ++ makefile多个头文件一个cpp

时间:2012-04-03 22:18:56

标签: c++

我正在编译错误。我有一个cpp文件和许多标题。对于makefile,我认为我需要列出所有头文件。 LinkedBinaryTree.h包含所有其他头文件的包含。这就是我写的:

 all: hw4a

 hw4a: LinkedBinaryTree.cpp linkedBinaryTree.h booster.h arrayQueue.  binaryTree.h        binaryTreeNode.h myExceptions.h queue.h
 g++ -o hw4a LinkedBinaryTree.cpp LinkedBinaryTree.h booster.h arrayQueue.h binaryTree.h     binaryTreeNode.h myExceptions.h queue.h 

clean:
rm hw4a 

我被告知O只需要这样做:

g++ LinkedBinaryTree.cpp -o bst.exe

哪一个是正确的?

2 个答案:

答案 0 :(得分:2)

后者是正确的:g++ -o result.exe source.cpp。您必须在编译器命令中包含头文件,因为它们已经由预处理器自动包含。

当然头文件仍然是依赖,必须在makefile中列出。这就是为什么有一种特殊的通用语法只能引用第一个引用:

.phony: all clean

all: result.exe

result.exe: main.o
    $(CXX) -o $@ $+

main.o: main.cpp class1.hpp lib2.hpp
    $(CXX) -c -o $@ $<

$+表示“所有依赖”(重复; $^也扩展为所有依赖,但未加基),因为您需要链接,而$<仅表示“第一依赖” ,因为你需要编译。

当你在它的时候,在编译器命令上撒上慷慨的警告标志。

答案 1 :(得分:0)

你被告知了什么。应包括在内的内容,而不是作为单独的单元编译。