用Cygwin编译C++

Moh*_*nde 6 gcc cygwin

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

pax*_*blo 13

您需要使用如下命令:

g++ -o prog prog.cpp
Run Code Online (Sandbox Code Playgroud)

这是一个简单的表单,可以将单文件C++项目转换为可执行文件.如果您有多个C++文件,则可以执行以下操作:

g++ -o prog prog.cpp part2.cpp part3.cpp
Run Code Online (Sandbox Code Playgroud)

但最终,为方便起见,您需要引入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
Run Code Online (Sandbox Code Playgroud)

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

关于为每个C++文件创建一个单独的项目,这根本不是必需的.如果你已经将它们全部放在一个目录中并且有一个简单的C++文件映射到可执行文件,你可以使用以下makefile:

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

all: $(EXES)

%.exe: %.cpp
    g++ -o $@ $^
Run Code Online (Sandbox Code Playgroud)

然后运行该make命令,它将(智能地)创建所有可执行文件.$@是目标,$^是先决条件的列表.

而且,如果你有更复杂的规则,只需将它们放在底部即可.将优先选择特定规则以模式规则:

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

all: $(EXES)

%.exe: %.cpp
    g++ -o $@ $^

xx.exe: xx.cpp xx2.cpp xx3.cpp
    g++ -o $@ $^
    echo Made with special rule.
Run Code Online (Sandbox Code Playgroud)