Скомпилируйте C ++ с Cygwin - PullRequest
6 голосов
/ 18 ноября 2009

Как мне скомпилировать мои программы на C ++ в Cygwin. У меня установлен GCC. Какую команду я должен использовать? Кроме того, как мне запустить мое консольное приложение, когда оно имеет расширение .cpp. Я пытаюсь изучать C ++ с помощью нескольких небольших программ, но в Visual C ++ я не хочу создавать отдельный проект для каждого маленького файла .cpp.

Ответы [ 4 ]

13 голосов
/ 18 ноября 2009

Вам нужно использовать команду вроде:

g++ -o prog prog.cpp

Это простая форма, которая превратит однофайловый проект C ++ в исполняемый файл. Если у вас есть несколько файлов C ++, вы можете сделать:

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

но, в конце концов, вы захотите ввести make-файлы для удобства, так что вам нужно будет только скомпилировать биты, которые изменились. Тогда вы получите 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

И , затем , вы начнете понимать, как писать свои make-файлы, чтобы сделать их более гибкими (например, не нужно отдельное правило для каждого файла C ++), но это можно оставить для другого вопроса.

Что касается отдельного проекта для каждого файла C ++, в этом нет необходимости. Если вы собрали их все в одном каталоге и просто сопоставили файлы C ++ с исполняемыми файлами, вы можете использовать следующий make-файл:

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

all: $(EXES)

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

Затем выполните команду 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.
4 голосов
/ 18 ноября 2009

Вам понадобится g ++. Затем попробуйте g++ file.cpp -o file.exe для начала. Позже вы можете избежать много печатать, узнав о Makefiles.

0 голосов
/ 29 апреля 2013

Что я делаю для компиляции программы 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

Таким образом, вы можете скомпилировать заголовочные файлы и включить их в свои прикладные программы.

0 голосов
/ 18 ноября 2009

Если вы хотите использовать Cygwin, вы должны использовать обычный gcc синтаксис

g++ -o foobar foobar.cpp

но это не очень хорошо работает с Visual C ++. Я советую вам взглянуть на Eclipse CDT , если вы предпочитаете использовать GCC вместо визуального компилятора C ++.

...