2009-11-18 127 views
5

如何在Cygwin中编译我的C++程序。我已经安装了gcc。我应该使用什么命令?另外,如何在扩展名为.cpp时运行我的控制台应用程序。我试图用一些小程序学习C++,但在Visual C++中,我不想为每个小的.cpp文件创建一个单独的项目。用Cygwin编译C++

回答

12

您需要使用如下命令:

g++ -o prog prog.cpp 

这是一个简单的表格,会变成一个文件C++项目到可执行。如果您有多个C++文件,你可以这样做:

g++ -o prog prog.cpp part2.cpp part3.cpp 

但最终,你将要为大家介绍的方便makefile文件,所以你只需要编译已更改的位。然后,你会最终有一个Makefile,如:

prog: prog.o part2.o part3.o 
    g++ -o prog prog.o part2.o part3.o 

prog.o: prog.cpp 
    g++ -c -o prog.o prog.cpp 

part2.o: part2.cpp 
    g++ -c -o part2.o part2.cpp 

part3.o: part3.cpp 
    g++ -c -o part3.o part3.cpp 

而且然后,你会开始盘算如何编写makefile文件,以使其更加灵活(如不需要单独的规则为每个C++文件),但这可以留给另一个问题。

关于为每个C++文件都有一个单独的项目,根本没有必要。如果你有他们都在同一个目录中,有℃的简单映射++文件,可执行文件,可以使用下面的Makefile:

SRCS=$(wildcard *.cpp) 
EXES=$(SRCS:.cpp=.exe) 

all: $(EXES) 

%.exe: %.cpp 
    g++ -o [email protected] $^ 

然后运行make命令,它会(智能)创建所有可执行文件。 [email protected]是目标,$^是先决条件的列表。

而且,如果你有更复杂的规则,就把它们放在底部。具体规则将优先选择的模式规则:

SRCS=$(wildcard *.cpp) 
EXES=$(SRCS:.cpp=.exe) 

all: $(EXES) 

%.exe: %.cpp 
    g++ -o [email protected] $^ 

xx.exe: xx.cpp xx2.cpp xx3.cpp 
    g++ -o [email protected] $^ 
    echo Made with special rule. 
+0

谢谢。但是,我可以创建一个makefile来编译同一目录中的任何C++文件,而不是为每个特定的.cpp文件创建一个makefile文件吗? – 2009-11-18 21:03:41

+0

什么是扩展名? 。使?或者没有像myMakefile – 2009-11-18 21:05:05

+0

@Mohit这样的扩展名,那些makefiles会将任何cpp文件编译为它的等效exe文件(通配符和'%'模式可以看到这一点)。按照惯例,make文件被称为Makefile或makefile。你可以使用不同的名字,比如bob.mk,但是你必须做'make -f bob.mk all'而不是'make all'。 – paxdiablo 2009-11-18 23:38:51

4

您将需要g ++。然后尝试g++ file.cpp -o file.exe作为开始。稍后,您可以通过学习Makefiles来避免大量输入。

0

,如果你想使用Cygwin,你应该使用正常gcc语法

g++ -o foobar foobar.cpp 

,但并没有真正使用Visual C踢好++ 。我建议你看看Eclipse CDT,如果你更喜欢使用GCC而不是Visual C++编译器。

0

我做什么编译CPP程序:如果你想单独编译文件

g++ -Wall Test.cpp -o Test 
-Wall enables warning and error messages to be shown 
-o Test creates an Test.exe after compilation 

g++ -Wall -c File1.cpp 
g++ -Wall -c File2.cpp 

现在创建一个可执行文件,结合目标文件为:

g++ -Wall File1.o File2.o -o File.exe 

这样你可以编译你的头文件,你可以包含在你的应用程序中。