使用Eclipse开发C/C++

1. 安装

下载并安装Eclipse For C/C++

这里下载Eclipse For C/C++版本,解压至某个目录。该Eclipse版本不带JRE,需要安装并配置JRE。如果想把该版本做成绿色版Portable,则将系统的jre复制到eclipse根目录下。

安装GCC

Windows下,到这里下载最近在线安装版本,双击运行并勾选所有安装项目。安装完成后,MinGW目录本身就是绿色软件,只需要将MinGW\bin目录及MinGW\msys\1.0\bin目录添加到系统path路径。

使用

双击执行eclipse.exe可执行程序,选择一个目录作为workspace,新建一个C项目,编译二进制文件,Run之。

帮助文件

帮助文件

2. 一些配置

去掉Remove trailing whitespace

Perferences里搜索save,选择C/C++的save actions,去掉Remove trailing whitespace

快捷键

Ctrl+Tab 头文件和源文件之间切换

3. 写C/C++ Makefile

Eclipse CDT支持通过自定义Makefile编译程序,这特别适合于一个项目中有多个main函数的情况,即生成了多个可执行程序。创建一个自定义makefile项目:

  • 对于新项目,新建C/C++ Project时选择Project Type为“Makefile Project”即可,默认是“executable”。

  • 对于已建好的C/C++ Project,右键点击项目名称,选择“Properties”,在“C/C++ Builder”中的“Builder Setting”去掉“Generate Makefile Automatically”的勾,然后设置一下“Build directory”的位置,例如“${workspace_loc}/${ProjName}”,Makefile应该放在该文件夹中。(注:该方法目前对windows可能无效。)

然后在项目根目录下手动创建名为Makefile的文件。一个完整的例子:

首先按上述步骤创建一个项目并在根目录新建好makefile文件,接著新建一个源代码目录src,目录src下也新建一个Makefile文件。根目录的makefile文件将进入src子目录并安装子目录makefile编译,makefile文件:

#编译所有子目录
#SUBDIRS=`ls -d */ | grep -v 'bin' | grep -v 'lib' | grep -v 'include'`

#编译指定子目录
SUBDIRS=src

define make_subdir
 @for subdir in $(SUBDIRS) ; do \
 (cd $$subdir && make $1) \
 done;
endef

all:
    $(call make_subdir , all)

install :
    $(call make_subdir , install)

debug:
    $(call make_subdir , debug)

clean:
    $(call make_subdir , clean)

这是一个通用的根目录makefile文件,它将进入子目录src中编译。然后在根目录创建一个通用的makefile.comm文件:

GCC = gcc -Wall
CXX = g++ -Wall

AR = ar
LD = ld

ALL_INC = -I./ $(MYINC)
ALL_LIB = $(MYLIB)

.SUFFIXES: .o .cpp .so .a
.c.o:
    $(GCC) $(ALL_INC)  $(CFLAGS) -c $^

.cpp.o:
    $(CXX) $(ALL_INC)  $(CFLAGS) -c $^

.o.so:    
    $(CXX) -shared -fPIC -o lib$@ $^ $(ALL_LIB)

.o.a:    
    $(AR) -crl lib$@ $^

.o:
    $(CXX) $(CFLAGS) -o $@ $^  $(ALL_LIB)

然后在src目录中新建两个C源代码test1.ctest2.c

src/test1.c:

#include "stdio.h"

int main(int argc, char **argv) {
    printf("hello test1");
    return 0;
}

src/test2.c:

#include "stdio.h"

int main(int argc, char **argv) {
    printf("hello test2");
    return 0;
}

接着编写src目录下的makefile文件:

include ../makefile.comm

MYINC =
MYLIB = 
VPATH =
OUTPUT = c_temp c_temp2
INSTALL = 

all:$(OUTPUT)

c_temp:c_temp.o
c_temp2:c_temp2.o

clean:
    rm -f *.o $(OUTPUT)

完成之后,右键点击项目名称,选择Build Project就可以编译出两个可执行程序,右键点击可执行程序选择Run就可以运行。

发现Makefile一个bug,新建一个Makefile Project之后,新建一个文件夹,然后重启eclipse,会发现该项目的Includes不见了。临时解决方法(2种):

  • 第一种(推荐,只适用于linux)采用第二种创建Makefile Project的方法,即已存在项目修改Builder属性那种,详见上面内容。

  • 第二种,重新Build Project一下就会出现Includes

现在我选择在windows下编辑linux程序代码,然后在linux命令下使用make工具编译。具体做法是将linux下的代码使用samba映射到windows下,或者反过来将windows的代码同步到linux,使得windows和linux下的代码一致。然后用windows下的eclipse打开代码,複製一份linux下/usr/include/的头文件到windows下,然后在项目里面添加这个头文件,就可以实现代码自动提示。编辑完成之后到linux下,使用make命令编译即可,运行也在linux下进行。这种方式我觉得很舒服,我用不习惯linux的gui介面。

文档更新时间: 2018-11-10 17:19   作者:nick