C++ Debian的Makefile-main中的函数调用
所以我有这个结构: simpleConnect.cpp(包含main) 调用功能_extract.cpp feature_extract.cpp(在这里做一些事情,返回simpleConnect) ISHEADER.h(具有特征提取声明和所有包含项等) 现在…这些文件使用了一个名为ARIA的库(用于mobilerobots)和一组头文件-EIGEN(用于矩阵操作等) 我曾经建议Aria的结构如下:C++ Debian的Makefile-main中的函数调用,c++,function,makefile,debian,C++,Function,Makefile,Debian,所以我有这个结构: simpleConnect.cpp(包含main) 调用功能_extract.cpp feature_extract.cpp(在这里做一些事情,返回simpleConnect) ISHEADER.h(具有特征提取声明和所有包含项等) 现在…这些文件使用了一个名为ARIA的库(用于mobilerobots)和一组头文件-EIGEN(用于矩阵操作等) 我曾经建议Aria的结构如下: SOURCES=simpleConnect all: $(SOURCES) CFLAGS=-fP
SOURCES=simpleConnect
all: $(SOURCES)
CFLAGS=-fPIC -g -Wall
ARIA_INCLUDE =-I/usr/local/Aria/include
ARIA_LINK=-L/usr/local/Aria/lib -lAria -lpthread -ldl -lrt
%: %.cpp
$(CXX) $(CFLAGS) $(ARIA_INCLUDE) $< -o $@ $(ARIA_LINK)
SOURCES=simpleConnect
全部:$(来源)
CFLAGS=-fPIC-g-Wall
ARIA_INCLUDE=-I/usr/local/ARIA/INCLUDE
ARIA_LINK=-L/usr/local/ARIA/lib-lAria-lpthread-ldl-lrt
%:%cpp
$(CXX)$(CFLAGS)$(ARIA_包括)$<-o$@$(ARIA_链接)
但是我在调用函数feature_extract的那一行得到了这个错误:
未定义对“特征提取(……)”的引用
collect2:ld重新连接1退出状态
据我所知,这是因为我没有告诉编译器功能提取在那里…因为我不知道如何
我尝试添加我在网上找到的作品,但没有效果,所以我来这里询问
任何人都可以修改makefile以便包含该文件以进行编译吗
谢谢你抽出时间,
帕特里克
如果这样做有效,就有可能进行进一步的改进。多亏了那些帮助我的人,我成功地解决了这个问题 我最终阅读了GNU make手册,解决了我的问题 这是最终工作的生成文件:
CFLAGS=-fPIC -g -Wall
ARIA_INCLUDE =-I/usr/local/Aria/include
ARIA_LINK=-L/usr/local/Aria/lib -lAria -lpthread -ldl -lrt
edit : simpleConnect.o feature_extract.o
$(CXX) $(CFLAGS) $(ARIA_INCLUDE) -o edit simpleConnect.o
feature_extract.o $(ARIA_LINK)
simpleConnect.o : simpleConnect.cpp ThesisHeader.h feature_extract.cpp
$(CXX) $(CFLAGS) $(ARIA_INCLUDE) -c simpleConnect.cpp $(ARIA_LINK)
feature_extract.o : feature_extract.cpp ThesisHeader.h
$(CXX) $(CFLAGS) $(ARIA_INCLUDE) -c feature_extract.cpp $(ARIA_LINK)
clean :
rm edit simpleConnect.o feature_extract.o
ld
是链接器,而不是编译器。SOURCES
应该是SOURCES=simpleConnect.cpp feature\u extract.cpp
如果我尝试:SOURCES=simpleConnect.cpp feature\u extract.cpp,我会出错“没有规则使目标为'all'所需的'feature_extract.cpp'。停止。您好,谢谢您的回复,但不幸的是,这也不起作用,返回了与以前相同的错误。我是否需要在其中的某个位置添加标题(seshader.h)?请原谅我,但我不知道如何做到这一点,我只是试图使用该文件进行编译,即它只是一个技术性的代码工作!谢谢again@user2220824:你能详细说明一下吗?我解决了这个问题,并发布了我自己问题的答案,谢谢你的帮助。
CFLAGS=-fPIC -g -Wall
ARIA_INCLUDE =-I/usr/local/Aria/include
ARIA_LINK=-L/usr/local/Aria/lib -lAria -lpthread -ldl -lrt
edit : simpleConnect.o feature_extract.o
$(CXX) $(CFLAGS) $(ARIA_INCLUDE) -o edit simpleConnect.o
feature_extract.o $(ARIA_LINK)
simpleConnect.o : simpleConnect.cpp ThesisHeader.h feature_extract.cpp
$(CXX) $(CFLAGS) $(ARIA_INCLUDE) -c simpleConnect.cpp $(ARIA_LINK)
feature_extract.o : feature_extract.cpp ThesisHeader.h
$(CXX) $(CFLAGS) $(ARIA_INCLUDE) -c feature_extract.cpp $(ARIA_LINK)
clean :
rm edit simpleConnect.o feature_extract.o