gpt4 book ai didi

c++ - 未正确考虑 Makefile 中的依赖项

转载 作者:行者123 更新时间:2023-11-27 23:21:03 25 4
gpt4 key购买 nike

我对 GNU makefile 的了解有限,但目前让我失望了。

我有一个类声明文件:mdfTree.h,一个类 mdfTree.cpp 的实现,以及一个带有 main 的 mdfTree_x.cpp 文件,我在其中创建类 mdfTree 的对象并调用其公共(public)函数,该函数又调用mdfTree的一些私有(private)成员变量。

我正在用 Makefile 编译它:

CXX=g++
CXXFLAGS=-g -Wall -W -Wconversion -Wshadow -Wcast-qual -Wwrite-strings $(shell root-config --cflags --gl\
ibs)
LDFLAGS=-g $(shell root-config --ldflags)
LDLIBS=$(shell root-config --libs)

mdfTree_x: mdfTree_x.o
g++ $(LDFLAGS) -o mdfTree_x mdfTree_x.o $(LDLIBS)

mdfTree_x.o: mdfTree_x.cpp
g++ $(LDFLAGS) $(CXXFLAGS) -c mdfTree_x.cpp

mdfTree.cpp 和 mdfTree_x.cpp 中有一个 #include mdfTree.h。 mdfTree_x.cpp 是否也需要 #include mdfTree.cpp

我认为我的 Makefile 是错误的,因为当我尝试编译时,类 mdfTree 中的公共(public)函数看不到同一类的私有(private)变量。此外,当我在 mdfTree.h 中插入一个语法错误时,编译器不会发现它。我如何告诉 Makefile mdfTree_x 需要使用/编译 mdfTree.h/.cpp?

最佳答案

不需要调整 make 文件来编译和链接 mdfTree.cpp。

像这样

mdfTree.o: mdfTree.cpp
g++ $(LDFLAGS) $(CXXFLAGS) -c mdfTree.cpp

并将链接步骤更改为

mdfTree_x: mdfTree_x.o mdfTree.o
g++ $(LDFLAGS) -o mdfTree_x mdfTree_x.o mdfTree.o $(LDLIBS)

关于c++ - 未正确考虑 Makefile 中的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13030144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com