开发者

Compile C++ with Cygwin

开发者 https://www.devze.com 2022-12-11 13:53 出处:网络
How do I compile my C++ programs in Cygwin. I have gcc in开发者_Go百科stalled. What command should I use? Also, how do I run my console application when it is in a .cpp extension. I am trying to learn

How do I compile my C++ programs in Cygwin. I have gcc in开发者_Go百科stalled. What command should I use? Also, how do I run my console application when it is in a .cpp extension. I am trying to learn C++ with some little programs, but in Visual C++, I don't want to have to create a seperate project for each little .cpp file.


You need to use a command like:

g++ -o prog prog.cpp

That's a simple form that will turn a one-file C++ project into an executable. If you have multiple C++ files, you can do:

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

but eventually, you'll want to introduce makefiles for convenience so that you only have to compile the bits that have changed. Then you'll end up with a Makefile like:

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

And then, you'll start figuring how to write your makefiles to make them more flexible (such as not needing a separate rule for each C++ file), but that can be left for another question.

Regarding having a separate project for each C++ file, that's not necessary at all. If you've got them all in one directory and there's a simple mapping of C++ files to executable files, you can use the following makefile:

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

all: $(EXES)

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

Then run the make command and it will (intelligently) create all your executables. $@ is the target and $^ is the list of pre-requisites.

And, if you have more complicated rules, just tack them down at the bottom. Specific rules will be chosen in preference to the pattern rules:

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.


You will need g++. Then try g++ file.cpp -o file.exe as a start. Later you can avoid much typing by learning about Makefiles.


if you want to use cygwin you should use the normal gcc syntax

g++ -o foobar foobar.cpp

but that doesn't really play well with Visual C++. I advise you to take a look into Eclipse CDT if you prefer using GCC over the visual C++ compiler.


What I do to compile a cpp program:

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

If you want to compile files separately:

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

Now create an executable with the combined object files as:

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

This way you can compile your header files and you can include in your application programs.

0

精彩评论

暂无评论...
验证码 换一张
取 消