为C+运行make+;Eclipse下的项目 我正在使用C++和AutoCAK开发Ubuntu 10.10下的C++应用程序。对于这个程序,我有两个cpp文件(main.cpp和forward.cpp,后者是一个测试类)和forward.h;我还有以下生成文件: main: \ forward.o g++ -fPIC -g -Wall -D_REENTRANT -fno-exceptions -I/usr/local/Aria/include/ -L/usr/local/Aria/lib -lAria -lpthread -ldl -lrt \ -o simple_controller \ main.cpp \ forward.o %.o : %.cpp g++ -c -g -Wall -D_REENTRANT -fno-exceptions -I/usr/local/Aria/include/ $< -o $@ clean: rm -fv *.o rm -fv */*.o 因为我是Linux下的C++开发新手,使用G++和MaFrask,我真的不理解这个问题。我认为正确编译我的应用程序所需的一切都写在makefile中,因为它可以从命令行完美地工作。但我似乎无法将相同的Makefile1:1复制到Eclipse项目中

为C+运行make+;Eclipse下的项目 我正在使用C++和AutoCAK开发Ubuntu 10.10下的C++应用程序。对于这个程序,我有两个cpp文件(main.cpp和forward.cpp,后者是一个测试类)和forward.h;我还有以下生成文件: main: \ forward.o g++ -fPIC -g -Wall -D_REENTRANT -fno-exceptions -I/usr/local/Aria/include/ -L/usr/local/Aria/lib -lAria -lpthread -ldl -lrt \ -o simple_controller \ main.cpp \ forward.o %.o : %.cpp g++ -c -g -Wall -D_REENTRANT -fno-exceptions -I/usr/local/Aria/include/ $< -o $@ clean: rm -fv *.o rm -fv */*.o 因为我是Linux下的C++开发新手,使用G++和MaFrask,我真的不理解这个问题。我认为正确编译我的应用程序所需的一切都写在makefile中,因为它可以从命令行完美地工作。但我似乎无法将相同的Makefile1:1复制到Eclipse项目中,c++,eclipse,makefile,eclipse-cdt,C++,Eclipse,Makefile,Eclipse Cdt,你知道我这里缺少什么吗? 提前感谢您的帮助 在构建项目时,eclipse正在执行make all命令,因此您需要修改项目以使用main而不是all作为eclipse使用的目标,或者向makefile添加一个all规则,该规则引用主规则。我还将在clean步骤下添加一个命令来删除可执行文件 修改的生成文件: main: \ forward.o g++ -fPIC -g -Wall -D_REENTRANT -fno-exceptions -I/usr/local/Aria/in

你知道我这里缺少什么吗?

提前感谢您的帮助

在构建项目时,eclipse正在执行make all命令,因此您需要修改项目以使用main而不是all作为eclipse使用的目标,或者向makefile添加一个all规则,该规则引用主规则。我还将在clean步骤下添加一个命令来删除可执行文件

修改的生成文件:

main: \
    forward.o
    g++ -fPIC -g -Wall -D_REENTRANT  -fno-exceptions  -I/usr/local/Aria/include/ -       L/usr/local/Aria/lib -lAria -lpthread -ldl -lrt \
    -o simple_controller \
    main.cpp \
    forward.o

%.o : %.cpp
    g++ -c -g -Wall -D_REENTRANT -fno-exceptions  -I/usr/local/Aria/include/ $< -o $@

clean:
    rm -fv *.o
    rm -fv */*.o
    rm -fv simple_controller

all: main
main:\
前进
g++-fPIC-g-Wall-D_可重入-fno异常-I/usr/local/Aria/include/-L/usr/local/Aria/lib-lAria-lpthread-ldl-lrt\
-o简单控制器\
main.cpp\
前进
%.o:%.cpp
g++-c-g-Wall-D_可重入-fno异常-I/usr/local/Aria/include/$<-o$@
清洁:
rm-fv*.o
rm-fv*/*.o
rm-fv简易控制器
全部:主要

好的,我现在发现了问题——Eclipse正在将makefile放入另一个目录,而不是所有源代码文件所在的“src”文件夹。因此make没有找到编译所需的.cpp和.h文件。现在我的结局是这样的:

...
forward.o : ../src/forward.cpp ../src/forward.h
...

有没有办法告诉make,即使没有明确说明,它也应该查看文件夹../src?

您可以告诉make使用-C选项更改目录

例如,如果您的源代码位于src/中,并且您的makefile位于src/的父目录中,您只需执行以下操作:

make -C ..
注意-从未专门使用过Eclipse,但通常有一种方法可以将命令行开关和选项添加到IDE选项中的构建命令中


(根据问题的第二部分进行回答,其中您指定问题在于makefile与源文件位于不同的文件夹中。)

不幸的是,这没有帮助,因为我已经发现Eclipse在默认情况下使用“makeall”作为目标,所以我已经从Project properties->C/C++Build->选项卡中删除了“all”“行为”,输入框“构建(增量构建)”。当我再次在这里输入“全部”并根据您的建议修改makefile时,我得到的错误与我最初发布的相同(这次第一行是“全部生成”)@Matthias:不确定出了什么问题,因为我在fedora 14系统上测试了它(我目前没有Ubuntu虚拟机)执行以下操作:1)创建一个新的空白项目。2)通过处理您提供的Makefile创建Makefile(重新格式化,使不是目标的每一行都以一个选项卡开始)3)创建一个简单的MIN .CPP和Proj.CPP文件。4)删除与/Ur/Posi/St/*相关的引用,因为它们与我的测试无关。5)将项目转换为C++ MaFixFieldProject。6)添加了所有目标7)构建了一个并且全部工作了。
make -C ..