Как скомпилировать программу через командную строку

Во время обучения C++ часто можно слышать про командную строку и видеть в литературе что-то наподобие этого:

C:MinGWbing++ C:C++HelloWorldHello.cpp -o C:C++HelloWorldHello.exe

  • В Windows для работы с командной строкой можно использовать файл CMD.EXE , который поставляетя с системой и лежит в каталоге system32. Полный путь к файлу может выглядеть так: C:WindowsSystem32cmd.exe

Для примера используется компилятор MinGW . Используемая операционная система Windows7.

Первым делом, компилятор MinGW нужно скачать из интернета. Весит он около 100МБ. Если вы зависимы от интернет-траффика, то берите в расчёт около 300МБ.

Скачиваем установщик MinGW c сайта mingw.org›Download/installer. Называется этот установщик mingw-get-setup.exe . Скачать установщик можно и с других сайтов, иногда бывает, что где-то есть версия компилятора новее последней официальной выложенной, но неофициальные версии не всегда хорошо. На момент написания статьи самая последняя версия, которую мне удалось найти, была нестабильной версией компилятора MinGW и была выложена на странице http://sourceforge.net/projects/mingw-w64/files/latest/download?source=files

Как скомпилировать Java программу через командную строку

Если разобрались, что и откуда качать, то после скачивания, разумеется, запускаем скачанный файл, в запустившейся программе жмём install .

В открывшемся окне можно указать свою директорию для скачивания в неё файлов установки. Для этого нужно нажать change . По умолчанию файлы скачиваются в корневой диск системы, в папку «MinGW» (чаще всего это C:MinGW). Я прохожу весь процесс установки одновременно с написанием статьи, оставляю всё как есть, не меняю каталог, следовательно, у меня файлы скачаются в «C:MinGW». После завершения скачивания файлов нужно нажать кнопку «continue», которая поможет продолжить установку компилятора.

Файлы будут скачиваться с серверов интернета. Если проблем не возникло и всё прошло гладко, то по завершению скачивания начинается процесс самой установки.

Такое окно свидетельствует об успешной загрузке файлов:
Рисунок главного окна программы установки компилятора MinGW :

http://ci-plus-plus-snachala.ru

Выбираем MinGW-32-gcc-g++ , щелкнув по пустому квадрату, левее него, мышкой, после чего жмем на Mark for installation .

Нажимаем меню наверху: Installation -> Apply Change и в открывшемся окне жмем Apply .

http://ci-plus-plus-snachala.ru

Должна начаться загрузка, ждем окончания.

По окончанию загрузки нужно закрыть диалоговое окно, в котором первая запись гласит, что все изменения успешно применены: All changees were applied succefully; you may now close this dialogue . Смело жмем close .

Если всё прошло гладко, то квадрат, который мы недавно выбирали, будет отмечен, а в колонке Installed Version укажется версия установленного компилятора .

Как компилировать программу через командную строку

Если вы хотя бы немного знаете английский язык, то с установкой у вас будет намного меньше проблем, чем в случае, если английского языка вы совсем не знаете. Надеюсь того, что описано на этой странице, будет достаточно для понимания процесса самой установки.

Так как компилятор есть, то его можно использовать, с его помощью можно компилировать пишемые нами коды.

В операционной системе Windows есть такая штука, которая называется «Переменные окружения», если не знать, что это такое, то для использования компилятора придётся прописывать в командой строке полные пути. В книгах вы можете видеть способ компилирования g++, а нам, без дополнительной возни, придётся писать нечто похожее на C:MinGWbing++ :

g++ C:Hello.cpp -o Hello.exe
C:MinGwbing++Hello.cpp -o MyProgramscppHello.exe

В общем, нужно писать полные пути. Такая делема в Windows решается путём добавления путей к компилятору в переменную окружения PATH. После добавления путей в PATH можно спокойно компилировать программы, используя простое название компилятора: g++

Если у Вас нет исходного кода, то, разумеется, его нужно написать и где-то сохранить. Сохранить лучше таким образом, чтобы прописывание пути к сохранённому файлу было как можно понятнее. Лучше всего, если весь путь не содержит русских символов, а содержит только символы латинского алфавита, к тому же хорошо, если путь не содержт пробелов.

Основная часть команды компиляции, которую нам, новичкам, легче всего понять, состоит из трёх частей: указание компилятора, указание входного файла для сборки и указание куда и как сохранить сделанный файл:

  • C:MinGWbing++ C:C++HelloWorldHello.cpp C:C++HelloWorldHello.exe

Выделенное белым цветом и есть указание компилятора, которым мы собрались компилировать код.

В Windows можно и желательно сделать так, чтобы не приходилось постоянно указывать весь путь к компилятору, а было можно указывать только сам компилятор, чтобы в командной строке срабатывали коды, подобные:

  • g++ C:C++HelloWorldHello.cpp -o C:C++HelloWorldHello.exe

Для этого используют системные переменные Windows (переменные окружения).
Переходим к интересующей нас части, к работе с компилятором из командной строки Windows.
Первое, что нужно сделать — добавить переменную окружения. См. картинки.

http://ci-plus-plus-snachala.ru

http://ci-plus-plus-snachala.ru

http://ci-plus-plus-snachala.ru

http://ci-plus-plus-snachala.ru

Нужно в PATH дописать каталог C:MinGWbin (согласно пути, куда установлен MinGW ), если там, в PATH , что-то написано, то дописывать через точку-запятую, как на картинке выше.

Для работы с командой строкой Windows обычно используется программа CMD.EXE , эту программу нужно запустить. Запустить её можно разными способами: комбинацией клавиш Win+R; Пуск -> Выполнить, ввести cmd, нажать Enter; запустить по прямому пути: C:WindowsSystem32cmd.exe (но быстрее клавишами). (Клавиша Win — это клавиша с рисунком логотипа Windows)

Выглядит консольное окно в Windows приблизительно так

http://ci-plus-plus-snachala.ru

Для компиляции исходного кода из командной строки готово почти всё. Давайте напишем нашу первую программу в обычном блокноте.

Читайте также:
В чем их отличие от свободно распространяемых программ

Я создам каталог C:C++HelloWorld , внутри которого создам текстовый документ , который сохраню как Hello.cpp .

Всё это создается обычными тырканиями вне консоли, т. к. пока геройствовать с консолью не особо нужно, хотя можно и из нее, просто сейчас незачем. Делается всё самым обычным, привычным и простым способом.

Содержимое текстового документа:

using namespace std ;
cout < < «Hellon» ;
cin . get ( ) ; //Для того, чтобы сразу не закрывалось

Надеюсь, создавать папки и текстовые документы умеют все. В идеале называния файлов и папок не должны содержать русских символов и пробелов, потому что с ними возможны проблемы. Привыкайте к именованию в латинской раскладке.

И вот приступаем к самой главной части, наконец заставляем компилятор превратить наш код, написанный в текстовом документе, в полноценную программу. Консольно окно должно быть открыто, что в нём написано нас мало интересует, не обращаем особого внимания, просто пишем

C:MinGWbing++ C:C++HelloWorldHello.cpp -o C:C++HelloWorldHello.exe
Если вы дописывали пути в переменную PATH (о чём писалось чуть ранее), то вам можно писать короче:
g++ -o C:C++HelloWorldHello.exe

Если при добавлении путей в переменную PATH ошибок допущено не было, то короткая запись сработает. Написали указанную строчку, подтверждаем нажатием клавиши Enter, немного ждём, и программа готова! Готовая программа называется Hello.exe , лежит в C:C++HelloWorld (в чём легко убедиться, если зайти по этому пути и посмотреть, какие там файлы ).

Вот такие дела. Для ясности немного сокращаю всё описанное выше. Порядок действий при создании программы такой:

Вызов компилятора C:MinGWbing++
Указание компилятору, где лежит, что ему обрабатывать:
C:C++HelloWorldHello.cpp

Указание компилятору, куда сохранить то, что он сделает, и как ему это делать:
-o C:C++HelloWorldHello.exe

Разумеется, выходной файл можно записывать в любой существующий каталог (куда удобнее), не обязательно в папку с исходником.

Компилятор можно устанавливать разными способами, не только таким, который описан в статье. Одним из хороших альтернативных способов установки компилятора MinGW является использование специальной утилиты MSYS

В скачанном установщике можно выбрать msys-base (см. в колонку «package»). Весь процесс установки аналогичен уже написанному. Если хотите, можете поставить.

После установки MSYS вы должны найти файл msys.bat , который находится в C:MinGWmsys1.0 . Нужно запускать этот файл. Когда программа запустится, останется писать команды.

Пишем команду компиляции:
g++ C:\C++\HelloWorld\Hello.cpp -o C:\C++\HelloWorld\Hello.exe
и жмём клавишу Enter для выполнения.
Утилита MSYS использует компилятор g++ , в результате чего будет создан файл, сохранится он в C:/C++/HelloWorld (т. е. куда укажите, там и будет).

Несложно заметить, что различается в MSYS.BAT и CMD.EXE способ написания слешей. При работе с MSYS.BAT писать команды нужно при латинской раскладке клавиатуры, если раскладка русская, то будете слышать характерные гудки.

Такой вот получился материал. Теперь книги, в которых для компилирования используется командная строка, вам будут намного понятнее. Поэтому нечто вроде g++ Тра-ля-ля вас напугать не должно.

  • Продолжение темы: С++ MinGW Аргументы командной строки для начинающих

Отличная статья 9 Плохая статья 4

11 комментариев на «“С++ для начинающих. MinGW. Командная строка. Работа из консоли Windows”»

Спасибо Вам за этот материал! Это как раз то, что я искал. Объяснено всё очень доходчиво. В итоге у меня всё получилось!

При попытке ввести в командной строке:g++ C:C++HelloWorldHello.cpp -o C:C++HelloWorldHello.exe
(с пробелами)
выходит ошибка g++: fatal error: no input files compilation terminated. А если ввести всю команду целиком без пробелов, выходит ошибка «Синтаксическая ошибка в имени файла, имени папки или метке тома».
Так что же делать?

Автор сайта отвечает :
Похоже, что в прописывании пути допущена ошибка. Легко проверить. Войдите в каталог с файлом *.cpp. Скопируйте мышью путь к файлу и вставьте этот путь в командную строку после g++, затем допишите через слеш имя компилируемого файла. Во вторую часть команды тоже вставьте мышью путь и через слеш допишите название конечного файла. Нажмите Enter.

Если скомпилируется, то все дело в неправильном написании пути к файлу. (Русские буквы, регистр не тот или еще какие-то свои причины).
Наиболее вероятно, что при создании папок получилось назвать папку используя русские символы. рус (С) и анлгл (С) очень похожи, например. 10.12.2015 в 3:45пп Irina712 говорит:
Раскладка и написание корректны.
Методом научного тыка выявлено, что программа компилируется, только если вместо пробелов поставить знак >
Это для информации, может кому пригодится.

  • zlib1.dll. (Пароль внутри архива в описании).

3) По завершении компиляции, возможно проверить программу прямо из командной строки. (из командной строки делается следующее: указывают путь к полученному после компиляции файлу программы и имя exe файла. Пример: C:Documents and SettingsAdmin>D:cpp pr2.exe ).
Все имена и пути надо прописывать на англ.яз.
Пример: name.cpp
Нужно, чтобы путь к программе не содержал русских букв, и в пути не было пробелов

Пример ( правильно ) : D:cpppr2.exe
Пример ( неправильно ): D:Program FilesCommon Filespr2.exe
D:Мои программыпр2.exe
D:Программыпр2.exe >

Если у вас в программе имелась русскоязычная строка/строки, по выполнению программы можно увидеть «иероглифы».

В этом случае, исходный код программы можно попробовать дополнить следующими строками:
— перед функцией int main ()

Источник: ci-plus-plus-snachala.ru

Компиляция приложения из командной строки

Что делать, если не установлена Visual Studio, но так хочется что-нибуль скомпилировать.

Если установлена платформа NET и установлен .NET SDK, то это не проблема. Приложения можно скомпилировать из командной строки, воспользовавшись утилитой csc.exe . Найти эту утилиту можно в каталоге C:WindowsMicrosoft.NETFramework[Требуемая версия].

Читайте также:
Как удалить программы если компьютер зависает

Для начала напишем в любом текстовом редакторе простое приложение и сохраним его в файл HelloWorld.cs:

using System; namespace HelloWorld < class HelloWorld < static void Main() < Console.Write(«Введите свое имя:»); string name = Console.ReadLine(); Console.WriteLine(«Привет !», name); Console.ReadLine(); > > >

Теперь скомпилируем и запустим его. Допустим, путь в командной строке установлен на текущий каталог нашего файла HelloWorld.cs. Тогда введем в командную строку следующую команду (в данном случае у меня установлен 4-й фреймворк в папке v4.0.30319):

C:WindowsMicrosoft.NETFrameworkv4.0.30319csc.exe HelloWorld.cs

Если ошибок при компиляции не возникло, то в одном каталоге с HelloWorld.cs мы увидим скомпилированный файл HelloWorld.exe.

Параметры компиляции

Компилятор может принимать следующие выходные параметры:

Присваивает имя выходной сборки. По умолчанию присваивается то же имя, что и у файла кода cs

Создает консольное приложение. Используется по умолчанию

Позволяет создать библиотеку dll

Позволяет создать графическое приложение. При этом консоль скрывается.

Позволяет создать модуль

Теперь создадим простейшее графическое приложение:

using System; using System.Windows.Forms; namespace HelloWorld < public class Program < static void Main() < Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); >> class Form1 : Form < TextBox textBox1; Button button1; public Form1() < //Создаем текстовое поле textBox1=new TextBox(); textBox1.Location = new System.Drawing.Point(50, 50); this.Controls.Add(textBox1); //Создаем кнопку button1 = new Button(); button1.Location = new System.Drawing.Point(60, 90); button1.Text = «Кнопка»; button1.Click+=button1_Click; this.Controls.Add(button1); >private void button1_Click(object sender, EventArgs e) < if(textBox1.Text==»») < MessageBox.Show(«Введите текст в текстовое поле»); >else < MessageBox.Show(textBox1.Text); >> > >

Скомпилируем его с помощью строки: C:WindowsMicrosoft.NETFrameworkv4.0.30319csc.exe /target:winexe WindowWorld.cs . И после запуска мы увидим нашу форму. Если бы мы не использовали target:winexe, то также скомпилировали бы графическое приложение, только тогда при запуске была видна также и консоль.

При компиляции у нас может быть ситуация, когда у нас несоклько исходных файлов, и нам нужно создать из них одно приложени. Тогда все эти файлы либо перечисляются при компиляции (csc.exe WindowWorld.cs File1.cs File2.cs File3.cs), либо если надо включить все файлы текущего каталога, то можно использовать следующую запись: csc.exe *.cs .

Также при компиляции может возникнуть необходимость включить ссылку на другую сборку. В предыдущем примере использовались ссылки из сборки System.Windows.Forms.dll. Однако все ссылки на нее, как и на еще несколько распространенных сборок, компилятр включает по умолчанию. Ссылки на большинство других сборок придется включать с помощью записи типа: csc.exe /reference:System.Windows.Forms.dll WindowWorld.cs . Если нужно включить несколько сборок, то они перечисляются друг за другом через точку с запятой:

csc.exe /reference:System.Windows.Forms.dll;System.Drawing.dll WindowWorld.cs

Источник: metanit.com

Компилятор csc.exe

В действительности необходимость в создании крупных приложений с использованием одного лишь компилятора командной строки C# может никогда не возникнуть, тем не менее, важно понимать в общем, как вручную компилировать файлы кода. Существует несколько причин, по которым освоение этого процесса может оказаться полезным:

  • Самой очевидной причиной является отсутствие Visual Studio 2010 или какой-то другой графической IDE-среды.
  • Работа может выполняться в университете, где использование инструментов для генерации кода и IDE-сред обычно запрещено.
  • Планируется применение автоматизированных средств разработки, таких как msbuild.exe, которые требуют знать опции командной строки для используемых инструментов.
  • Возникло желание углубить свои познания в C#. В графических IDE-средах в конечном итоге все заканчивается предоставлением компилятору csc.ехе инструкций относительно того, что следует делать с входными файлами кода C#. В этом отношении изучение происходящего «за кулисами» позволяет получить необходимые знания.

Еще одно преимущество подхода с использованием одного лишь компилятора csc.ехе состоит в том, что он позволяет обрести навыки и чувствовать себя более уверенно при работе с другими инструментами командной строки, входящими в состав .NET Framework 4.0 SDK, так как целый ряд важных утилит работает исключительно в режиме командной строки.

Чтобы посмотреть, как создавать .NET-приложение без IDE-среды, давайте построим с помощью компилятора C# и текстового редактора Notepad простую исполняемую сборку по имени TestApplication.exe. Сначала необходимо подготовить исходный код. Откройте программу Notepad (Блокнот), выбрав в меню Start (Пуск) пункт All Programs — Accessories — Notepad (Все программы — Стандартные — Блокнот), и введите следующее типичное определение класса на C#:

using System; class TestApplication < static void Main() < Console.WriteLine(«Привет!»); Console.ReadLine(); >>

После окончания ввода сохраните файл под именем TestApplication.cs. Теперь давайте ознакомимся с ключевыми опциями компилятора C#.

Указание целевых входных и выходных параметров

Первым делом важно разобраться с тем, как указывать имя и тип создаваемой сборки (т.е., например, консольное приложение по имени MyShell.exe, библиотека кода по имени MathLib.dll или приложение Windows Presentation Foundation по имени Halo8.ехе). Каждый из возможных вариантов имеет соответствующий флаг, который нужно передать компилятору csc.ехе в виде параметра командной строки.

Обратите внимание, что параметры, передаваемые компилятору командной строки (а также большинству других утилит командной строки), могут сопровождаться префиксом в виде символа дефиса (-) или слеша (/).

Выходные параметры, которые может принимать компилятор C# приведены в следующей таблице:

Параметры компилятора csc.exe

Параметр Описание
/out Этот параметр применяется для указания имени создаваемой сборки. По умолчанию сборке присваивается то же имя, что у входного файла *.сs
/target:exe Этот параметр позволяет создавать исполняемое консольное приложение. Сборка такого типа генерируется по умолчанию, потому при создании подобного приложения данный параметр можно опускать
/target:library Этот параметр позволяет создавать однофайловую сборку *.dll
/target:module Этот параметр позволяет создавать модуль. Модули являются элементами многофайловых сборок
/target:winexe Хотя приложения с графическим пользовательским интерфейсом можно создавать с применением параметра /target: ехе, параметр /target: winexe позволяет предотвратить открытие окна консоли под остальными окнами
Читайте также:
Программа для вычисления чисел кто написал

Чтобы скомпилировать TestApplication.cs в консольное приложение TestApplication.exe, перейдите в каталог, в котором был сохранен файл исходного кода (с помощью флага cd) и введите следующую команду:

Компиляция приложения с помощью csc.exe

Обратите внимание, что здесь C:myProject — это путь к папке, в которой хранится файл TestApplication.cs. Так же обратите внимание, что здесь флаг /out не был указан явным образом, поэтому исполняемым файл получит имя TestApplication.ехе из-за того, что именем входного файла является TestApplication. Кроме того, для почти всех принимаемых компилятором C# флагов поддерживаются сокращенные версии написания, наподобие /t вместо /target (полный список которых можно увидеть, введя в командной строке команду csc -?).

Теперь можно попробовать запустить приложение TestApplication.ехе из командной строки, введя имя его исполняемого файла:

Запуск приложения через коммандную строку

Добавление ссылок на внешние сборки

Давайте посмотрим, как скомпилировать приложение, в котором используются типы, определенные в отдельной сборке .NET. Если осталось неясным, каким образом компилятору C# удалось понять ссылку на тип System.Console, вспомните, что во время процесса компиляции происходит автоматическое добавление ссылки на mscorlib.dll (если по какой-то необычной причине нужно отключить эту функцию, следует передать компилятору csc.exe параметр /nostdlib).

Модифицируем приложение TestApplication так, чтобы в нем открывалось окно сообщения Windows Forms. Для этого откройте файл TestApplication.cs и измените его следующим образом:

using System; using System.Windows.Forms; class TestApplication < static void Main() < Console.WriteLine(«Привет!»); MessageBox.Show(«Привет. «); >>

Далее в командной строке нужно проинформировать компилятор csc.exe о том, в какой сборке содержатся используемые пространства имен. Поскольку применялся класс MessageBox из пространства имен System.Windows.Forms, значит, нужно указать компилятору на сборку System.Windows.Forms.dll, что делается с помощью флага /reference (или его сокращенной версии /r):

Привязка ссылки на внешнюю сборку

Если теперь снова попробовать запустить приложение, то помимо консольного вывода в нем должно появиться еще и окно с сообщением:

Кстати, как поступить, когда необходимо указать csc.exe несколько внешних сборок? Для этого нужно просто перечислить все сборки через точку с запятой. В рассматриваемом примере ссылаться на несколько сборок не требуется, но ниже приведена команда, которая иллюстрирует перечисление множества сборок:

csc /r:System.Windows.Forms.dll;System.Drawing.dll *.cs

Компиляция нескольких файлов исходного кода

В текущем примере приложение TestApp.exe создавалось с использованием единственного файла исходного кода * . cs. Хотя определять все типы .NET в одном файле *.cs вполне допустимо, в большинстве случаев проекты формируются из нескольких файлов *.cs для придания кодовой базе большей гибкости. Чтобы стало понятнее, давайте создадим новый класс и сохраним его в отдельном файле по имени HelloMessage.cs:

// Класс HelloMessage using System; using System.Windows.Forms; class HelloMessage < public void Speak() < MessageBox.Show(«Привет!!») ; >>

Изменим исходный класс TestApplication так, чтобы в нем использовался класс этого нового типа:

using System; class TestApplication < static void Main() < Console.WriteLine(«Привет!»); HelloMessage v = new HelloMessage(); v.Speak(); >>

Чтобы скомпилировать файлы исходного кода на C# , необходимо их явно перечислить как входные файлы:

Компиляция нескольких файлов исходного кода

В качестве альтернативного варианта компилятор C# позволяет использовать групповой символ (*) для включения в текущую сборку всех файлов *.cs, которые содержатся в каталоге проекта:

Компиляция нескольких файлов исходного кода с использованием группового символа *

Вывод, получаемый после запуска этой программы, идентичен предыдущей программе. Единственное отличие между этими двумя приложениями связано с разнесением логики по нескольким файлам.

Работа с ответными файлами в C#

Как не трудно догадаться, для создания сложного приложения C# из командной строки потребовалось бы вводить утомительное количество входных параметров для уведомления компилятора о том, как он должен обрабатывать исходный код. Для облегчения этой задачи в компиляторе C# поддерживается использование так называемых .

В ответных файлах C# размещаются все инструкции, которые должны использоваться в процессе компиляции текущей сборки. По соглашению эти файлы имеют расширение *.rsp (сокращение от response — ответ). Чтобы посмотреть на них в действии, давайте создадим ответный файл по имени TestApplication.rsp, содержащей следующие аргументы (комментарии в данном случае обозначаются символом #):

# Это ответный файл для примера # TestApplication.exe /r:System.Windows.Forms.dll # Параметры вывода и подлежащие компиляции файлы /target:exe /out:TestApplication.ехе *.cs

Компиляция ответного файла .rsp

Последним моментом, связанным с ответными файлами, о котором необходимо упомянуть, является то, что с компилятором C# ассоциирован ответный файл csc.rsp, который используется по умолчанию и размещен в том же самом каталоге, что и файл csc.ехе (обычно это С:WindowsMicrosoft. NETFramework , где на месте элемента идет номер конкретной версии платформы). Открыв файл csc.rsp в программе Notepad (Блокнот), можно увидеть, что в нем с помощью флага /r: указано множество сборок .NET, в том числе различные библиотеки для разработки веб-приложений, программирования с использованием технологии LINQ и обеспечения доступа к данным и прочие ключевые библиотеки (помимо, конечно же, самой главной библиотеки mscorlib.dll):

Параметры файла csc.rsp

При создании программ на C# с применением csc.ехе ссылка на этот ответный файл добавляется автоматически, даже когда указан специальный файл *.rsp. Из-за наличия такого ответного файла по умолчанию, рассматриваемое приложение TestApplication.ехе можно скомпилировать и c помощью следующей команды (поскольку в csc.rsp уже содержится ссылка на System.Windows.Forms.dll):

Компиляция приложения с помощью стандартного файла rsp

Стоит отметить, что в случае добавления с помощью опции /r ссылок на сборки, которые на самом деле не используются, компилятор их проигнорирует. Поэтому беспокоиться по поводу «разбухания кода» не нужно.

Источник: professorweb.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru