C++开发环境
Visual Studio2008:
Vs2008+sp1+ VA_X
Eclipse3.5.1:
JDK1.6(jave环境)+Eclipse3.5.1(已集成了CDT,c++)+MinGW5.1.6(gcc)+gdb-6.6.tar.bz2+MSYS-1.0.10(file>makefile)
多年以来,一直使用Eclipse作为自己的Java IDE, 觉得最好的一点就是它的编辑器功能,所以也尝试使用Eclipse+CDT作为自己的C/C++开发平台,不过早期的CDT版本中编辑器功能以及提供的开发方式并不尽如人意。随着CDT的不断发展,在这些方面都有了长足的进步,已经可以用来作为主要C/C++开发平台。
本文详细介绍了在Window系统上使用Eclipse和MinGW作为C/C++开发平台的的安装和配置过程。
各个软件版本是到目前为止(2009年11月23日)的最新稳定版本:
- JDK1.6
- Eclipse 3.5.1
- CDT 6.0.1(已集成在Eclipse中)
- MinGW (MinGW-5.1.6(gcc环境), gdb for mingw 6.8, MSYS-1.0.11(file>makefile))
MinGW的安装与配置
MinGW
这里我们采用自动安装方式,手动安装可以参考MinGW.org的在线文档 .
1. 在MingGW的下载页面 下载并运行MinGW-5.1.6.exe
2. 在安装向导的各个页面:
- Install orjust download files? -> Download and install
- Choose Package -> Current
- Choose Components -> MinGW base tools, g++ compiler (不要选择MinGW Make,我们后面要安装的MSYS里面带了更完善的make工具)
- Destination Folder -> 输入你要安装到的位置,比如D:/C/MinGW
3. 安装完成后,把MinGW的bin目录,比如D:/MinGW/bin加到系统的环境变量PATH中
3. 修改环境变量
选择计算机 — 属性 --- 高级系统设置 --- 环境变量,在系统变量中找到 Path 变量,在后面加入 min-gw 的安装目录,如 C:\MinGw\bin
4. 在开始菜单中,点击“运行”,输入cmd,打开命令行
输入mingw-get,如果弹出MinGw installation manager窗口,说明安装正常。 此时,关闭MinGw installation manager窗口,否则接下来的步骤会报错
5. 在cmd中输入命令 mingw-get install gcc,等待一会,gcc就安装成功了。
如果想安装g++,gdb,只要输入命令 mingw-get install g++和mingw-get install gdb
4. 验证安装: 写一个简单的test.c程序,在命令行输入gcc -o test.exe test.c , 看编译是否正常
GDB for MinGW
在上面安装的MinGW中,并不包括gdb。为了debug我们的程序,需要单独下载和安装gdb
1. 在MingGW的下载页面 中GNU Source-Level Debugger下,下载gdb-6.8-mingw-3.tar.bz2 或者版本gdb-7.4-2-mingw32-bin.tar.lzma; https://sourceforge.net/projects/mingw/files/MinGW/Extension/gdb/
2. 使用7-zip解压缩到MinGW的安装目录
3. 验证安装
- 写一个简单的test.c程序,在命令行输入gcc -o test.exe -g test.c
- 在命令行运行 gdb test.exe
- 在gdb> 提示符后,输入list ,查看打印出的test.c程序
MSYS
MSYS是一个window上的类似bash 的shell,可以用来替代Windows自带的cmd.exe。它提供了部分Unix平台上的常用工具,包括make。我们需要安装它,以支持在Eclipse CDT上开发使用Makefile的程序。
1. 在MingGW的下载页面 中MSYS Base System下,下载并运行MSYS-1.0.11.exe
2. 安装过程中,指定安装目录,假定是D:/msys/1.0
3. 安装到100%时,会弹出DOS窗口,询问是否继续进行post install, 输入y
- Do you have MinGW installed?[yn] -> y
- Where is your MinGW installation? -> D:/MinGW (请用真实的安装目录替换,注意路径分隔符要使用斜杠"/")
4. 安装结束后,把MSYS的bin目录,比如D:/msys/1.0/bin加到系统的环境变量PATH中
5. 在命令行输入make -v 验证安装
Eclipse的安装与配置
如果还没有安装JDK ,请先到SUN 的网站 下载安装JDK1.6 (Java SE 6).
对于Eclispe,推荐下载 集成好CDT 的Eclipse 版本,这样配置起来最简单,问题也最少。
下载集成好CDT 的Eclipse(Eclipse IDE for C/C++ Developers ) windows版本 后,解压缩即可。
安装Eclipse与CDT插件
从站点http://www.eclipse..org上下载eclipse 3.0.1版本,然后解压缩到c:\eclipse下(目录自己随意安排,至于安装jdk与配置环境,这里不说了,网上很多,自己去找吧)
打开eclipse,选择菜单Helpàsoftware updatesàfind and install,弹出”Feature Updates”对话框,选择”Search for new feature to install”,进入”Update sites to visit”对话框,选择右边按钮”New Remote Site”,在”name”一栏,随便填个名字,例如”CDT”;在”URL”中填写: http://update.eclipse.org/tools/cdt/releases/new.,然后next,选择最新版本的” Eclipse C/C+ Development Tooling SDK”与” Eclipse C/C+ Development Tools”进行安装
配置开发环境
打开WindowsàPreferences,选择C/C++àNew Make Projects,在Make Builder栏中,修改build commond为mingw32-make
修改Binary Parser栏,选中PE Windows Paser,放在最前面
例子
Managed Make C project
1) FileàNewà ProjectàCà Managed Make C project,输入project name,例如”testmanagedc”,其余选择默认,建立一个新的工程
2) FileàNew àFile,建立一个main.c文件,输入代码:
#include <stdio.h>
int main(){
printf("hello,world");
return 0;
}
3) Projectàproperties,在C/C++build一项中,选择Configuration后面的Manage按钮,修改Make commond一栏,将”make –k”替换为mingw32-make.
4) ProjectàBuild Project
5) RunàRun…,选择C/C++local,选择下面的new按钮,建立一个新的configuration,name随便,在main栏中,Project一项通过Browse 按钮,选择当前所用project;C/C++ Application中通过Search/Browse,选择当前可用的执行文件名(必须是已经生成的,真BT),这样就可以通过Run 与debug功能
l Standard Make C project
1) FileàNewà ProjectàCà Standard Make C project,输入project name,例如”teststandardc”, next,在C/C++ make project setting中修改Make Builder中Build commond为 mingw32-make –f file>makefile,其余选择默认,建立一个新的工程.
2) FileàNew àFile,建立一个main.c文件,输入代码:
#include <stdio.h>
int main(){
printf("hello,world");
return 0;
}
3) FileàNew àFile,建立一个file>makefile文件,输入代码:
main : main.o
g++ -o main main.o -L C:/MinGW/lib/gcc-lib/mingw32/3.2.3/ -lstdc++
main.o : main.c
g++ -ggdb -c main.c
all :
${MAKE} main
clean :
-del main.o
4) ProjectàBuild Project
5) RunàRun…,选择C/C++local,选择下面的new按钮,建立一个新的configuration,name随便,在main栏中,Project一项通过Browse 按钮,选择当前所用project;C/C++ Application中通过Search/Browse,选择当前可用的执行文件名(必须是已经生成的,真BT),这样就可以通过Run 与debug功能
简单的C项目示例
假设现在要编写一个华氏温度和摄氏温度之间换算的程序,并按照模块分成了以下三个源程序:
1. temp_convert.h
- #ifndef _TEMP_CONVERT_H_
- #define _TEMP_CONVERT_H_
- double c2f(double);
- double f2c(double);
- #endif
2. temp_convert.c
- #include "temp_convert.h"
- double c2f(double c) {
- return c * 9.0 / 5.0 + 32;
- }
- double f2c(double f) {
- return (f - 32.0) * 5.0 / 9.0;
- }
3. main.c
- #include <stdio.h>
- #include "temp_convert.h"
- int main() {
- double i = 0;
- printf("Fahrenheit/tCelsius/n");
- for (; i <= 100; i++) {
- printf("%10.2f/t%7.2f/n", i, f2c(i));
- }
- return 0;
- }
使用Internal Builder
这种方式不需要自己编写file>makefile,适用于结构简单的项目。
在创建项目的时候,选择 C Project->Executable->Empty Project, ToolsChains 选择 MinGW GCC
把上面的三个程序加入项目,选择Run as "Local C/C++ Application"既可编译运行。
单独编写file>makefile
对于结构复杂,模块比较多的项目,我们需要编写file>makefile,来更好的控制程序的编译以及其他相关过程。
在创建项目的时候,选择 C Project->Makefile Project->Empty Project, ToolsChains 选择 MinGW GCC
把上面的三个程序加入项目,然后新建一个file>makefile,内容如下:
- EXE_TARGET = temp_convert.exe
- CC = gcc
- CFLAGS = -Wall
- COMPILE = $(CC) $(CFLAGS) -c
- SRCS = $(wildcard *.c)
- OBJS = $(patsubst %.c,%.o,$(SRCS))
- all: $(EXE_TARGET)
- $(EXE_TARGET): $(OBJS)
- $(CC) -o $(EXE_TARGET) $(OBJS)
- main.o temp_convert.o: temp_convert.h
- %.o: %.c
- $(COMPILE) -o $@ $<
- clean:
- -rm $(OBJS) $(EXE_TARGET)
编译的时候,选择Build Project既可,会默认执行all这个target。对于其他的make target,可以在file>makefile的Outline里面,选中某个target,然后右键菜单"Add make Target".