使用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.c
和test2.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介面。