C++ C++;makefile多个头一个cpp
我有编译错误。我有一个cpp文件和许多标题。对于makefile,我想我需要列出所有文件头。LinkedBinaryTree.h包含所有其他头文件的include。这就是我写的:C++ C++;makefile多个头一个cpp,c++,C++,我有编译错误。我有一个cpp文件和许多标题。对于makefile,我想我需要列出所有文件头。LinkedBinaryTree.h包含所有其他头文件的include。这就是我写的: all: hw4a hw4a: LinkedBinaryTree.cpp linkedBinaryTree.h booster.h arrayQueue. binaryTree.h binaryTreeNode.h myExceptions.h queue.h g++ -o hw4a Linke
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
哪一个是正确的?告诉你的。应包括include,而不是作为单独的单元进行编译。后者是正确的:
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 $@ $<
.phony:都是干净的
全部:result.exe
result.exe:main.o
$(CXX)-o$@$+
main.o:main.cpp class1.hpp lib2.hpp
$(CXX)-c-o$@$<
$+
表示“所有依赖项”(重复;$^
也扩展到所有依赖项,但未限定),这是链接所需的,而$