在Eclipse下运行C项目的make

我正在使用g和automake在Ubuntu 10.10下开发一个C应用程序.对于这个程序,我有两个cpp文件(main.cpp和forward.cpp,后者是测试类)和forward.h;我还有以下makefile:

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

当我将所有这四个文件复制到同一目录并从命令行(bash)调用“make”时,将调用g并正确编译我的程序.

好的,现在我想在Eclipse下实现同样的目标.所以我在Eclipse下创建了一个新的非托管C项目,这样我就可以提供自己的makefile(与上面列出的相同).不幸的是,当我现在使用Eclipse下的“Build all”选项时,我可以看到以下控制台输出:

make 
make: *** No rule to make target `forward.o', needed by `main'.  Stop.

由于我是Linux下的C开发新手,使用g和makefile,我真的不明白这个问题.我认为正确编译我的应用程序所需的一切都是在makefile中编写的,因为它在命令行中运行良好.但似乎我无法将相同的makefile 1:1复制到我的Eclipse项目中.

我在这里缺少什么想法?
在此先感谢您的帮助!

最佳答案 当您执行项目构建时,eclipse正在执行make all命令,因此您需要修改项目以使用main而不是所有目标eclipse使用,或者将所有规则添加到引用备份的makefile中主要规则.另外,我会在clean步骤下添加一个命令来删除可执行文件.

修改后的Makefile:

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
点赞