Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

Как скомпилировать файл в командной строке


Компиляция C++ кода с помощью g++

Для этого урока у вас должна быть установлена программа g++. g++ - производное имя от gcc. gcc - компилятор языка C. Имя gcc образовано от GNU C Compiler. GNU - операционная система, а также это набор свободного ПО, включая gcc и g++ (компиляторы C/C++).

Если вы используете Linux, то g++ уже установлен.

g++ для Windows

Есть пара вариантов, как установить g++ на Windows. Cygwin и MinGW32. MinGW имеет версию для архитектуры x86-64. И именно её мы и будем использовать. Скачайте MinGW-W64, установите, а затем найдите mingw в меню Пуск (MinGW-W64 -> Run Terminal), или зайдите в папку с программой в проводнике (нужно запускать файл mingw-w64.bat). Вы увидите командную строку Windows.

Работа с командной строкой Windows

Если вы никогда не использовали командную строку, то вот несколько полезных команд:

d: c: cd folder1 cd ..

Имя диска с двоеточием - перейти на определённый диск. Например, я храню код на диске D, поэтому моей первой командой будет:

d:

cd - изменить директорию (change directory). Эта команда переместит вас в нужную директорию. Я храню код для данных уроков в папке: d:\prog\cpp. Поэтому, после того как я выбрал диск D, я обычно ввожу следующую команду:

cd prog\cpp

cd .. (две точки) переместит вас в папку выше.

Исходный код

Создайте файл hello_world.cpp в папке, где вы планируете хранить свой код. Откройте его в простом текстовом редакторе: Notepad/Gedit/Notepad++/Sublime... И вставьте следующий текст:

#include <iostream> int main() { cout << "Hello World\n"; return 0; }

Эта программа напечатает строку Hello World в консоли. Мы обсудим, что означает данный код, в следующем уроке.

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

Компиляция C++ кода с помощью компилятора g++

g++ <filename>

g++ hello_world.cpp

После выполнения данной команды, в текущей директории будут создан файл: a.out или a.exe. Чтобы запустить программу, введите имя файла в консоли и нажмите Ввод (Enter). В консоли вы увидите текст Hello World. После этого программа сразу завершится.

a.out - имя по умолчанию для скомпилированных файлов. Мы можем изменить его:

g++ -o <output_filename> <filename> g++ -o hello_world.exe hello_world.cpp

Выполнив последнюю команду, мы получим файл hello_world.exe. После этого в Windows скомпилированную программу можно выполнить следующей командой:

hellow_world.exe

А в Linux:

./a.out

Компиляция (compilation) и связывание (linking)

Во время компиляции происходит два шага. Первый - компиляция файлов с исходным кодом. Результат этого шага: объектный код. Объектный код помещается в файлы с расширением .o. Следующий шаг - связывание (linking). Специальная программа - компоновщик (linker), берёт объектные файлы и "связывает" их вместе. Компоновщик необходим, когда есть больше одного файла с исходным кодом. Пока наши программы будут состоять из одного файла. Но в будущем нам понадобится компоновщик.

Заключение

Мы рассмотрели как компилируется C++ код с помощью компилятора g++. Теперь мы готовы к изучению C++. А начнём мы с разбора программы Hello World.

Упражнения

  1. Скомпилируйте hello_world.cpp

Компиляция программ с помощью Notepad++ / Хабр

Компиляция программ при помощи текстового редактора на примере Notepad++

Цель: Научиться компилировать программы из командной строки. Научиться компилировать из текстового редактора Notepad++ (вернее научиться писать скрипты и связывать их), создавать скрипты и макросы, устанавливать системные переменные.

Сам текстовый редактор ничего не компилирует и не запускает. Также как и IDE не компилирует. Компиляция происходит с помощью компилятора. Выполнение производится некоторой средой выполнения. Это может быть интерпретатор команд или среда выполнения.
При компиляции программы на C# упаковываются в сборки. Код на языке IL автоматически преобразуется в код для конкретного процессора. Что относится к java, то скомпилированные файлы .class выполняется виртуальной машиной Java. Файлы .java компилируются в бай-код, то есть некоторый промежуточный код. Компиляция в exe файл тоже производится компилятором.

.EXE (сокр. англ. executable — исполнимый) — расширение исполняемых файлов, применяемое в операционных системах DOS, Windows, Symbian OS, OS/2 и в некоторых других, соответствующее ряду форматов. Процесс получения exe файла состоит из следующих этапов: препроцессинг, ассемблирование, компилирование, линковка.

ОUT файлы — исполняемые файлы для UNIX-подобных операционных систем.
Файл может хранить исполняемый код, общую динамическую библиотеку или объектный код.

Терминология

Cmd.exe — интерпретатор командной строки (англ. command line interpreter) для операционных систем OS/2, Windows CE и для семейства операционных систем, базирующихся на Windows NT (англ. Windows NT-based). cmd.exe является аналогом COMMAND.COM

Те́кстовый проце́ссор — компьютерная программа, используемая для написания и модификации документов, компоновки макета текста и предварительного просмотра документов в том виде, в котором они будут напечатаны (свойство, известное как WYSIWYG).

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


Скрипт (сценарий) — это отдельные последовательности действий, созданные для автоматического выполнения задачи.
Интерфе́йс по́льзователя, он же по́льзовательский интерфейс (UI — англ. user interface) — интерфейс, обеспечивающий передачу информации между пользователем-человеком и программно-аппаратными компонентами компьютерной системы (ISO/IEC/IEEE 24765-2010).

GUI означает graphical user interface, графический интерфейс пользователя.
GUI состоит из одного или нескольких окон и каждое окно содержит один или несколько элементов управления.

SDK (от англ. software development kit) — набор средств разработки, который позволяет специалистам по программному обеспечению создавать приложения для определённого пакета программ, программного обеспечения базовых средств разработки, аппаратной платформы, компьютерной системы, игровых консолей, операционных систем и прочих платформ.

IDE (Integrated Development Environment) — интегрированная среда разработки программного обеспечения.

Переменная среды́ (англ. environment variable) — текстовая переменная операционной системы, хранящая какую-либо информацию — например, данные о настройках системы.

Переменные среды́ Windows делятся на две категории:
Переменные среды́ пользователя — указывают путь до пользовательских каталогов.
Системные переменные — хранят данные о некоторых каталогах операционной системы и конфигурации компьютера.

Предпосылки

Для сборки проектов, в настоящее время часто используется командная строка.

Как это упрощает сборку? Дело в том, что вы можете создать командный файл с параметрами компилятора, с параметрами логирования, с параметрами получения ошибок и многими другими параметрами, которые будут автоматизировать вашу сборку. Плюсы такого подхода очевидны:
у вас не тратится время на загрузку тяжелой IDE, вы можете автоматизировать многие детали вашей сборки. Из командной строки могут быть доступны аргументы программы, которые недоступны из GUI. У GUI обычно меньше возможностей, потому как не все команды и аргументы будут предоставлены пользователю. Вы можете записать ваш скрипт(набор команд, логику и переменные) в отдельный файл и запускать при надобности.
К тому же такой подход даст вам более глубокое изучение и понимание того, что происходит во время выполнения. Вы сможете рассмотреть каждый шаг отдельно. Другой аспект, использование блокнота для компиляции, предоставляет вам возможность отлаживать и запускать небольшие куски кода без использования вашей тяжелой IDE. У вас в нужный момент может не оказаться установленной IDE и отсутсвовать подключение к интернет. В принципе вы можете использовать другой текстовый редактор, не Notepad++. Основная идея остается та же. В этой статье я опишу использование cmd Windows 10, Notepad++ и плагина NppExec. В предыдущих версиях Windows это тоже работает. Могут быть незначительные отличия. В данном вопросе вы можете разобраться самостоятельно.

Заметьте, это не призыв отказаться от удобных средств IDE. Хорошие, удобные IDE повышают производительность команды разработчиков. К сожалению, по тем или иным причинам не всегда существует возможность их использовать.

Скачать программы вы можете с официальных сайтов:
Notepad++: notepad-plus-plus.org
Исходники релизов программы: github.com/notepad-plus-plus/notepad-plus-plus/releases
Автор программы: Don HO, Senior Software Engineer
Биография \ Резюме автора: donho.github.io

Автор плагина: Vitaliy Dovgan
Помощь: Don HO, Jens Lorenz, Juha Nieminen,Joel Yulilouma

Новую версию NppExec вы можете скачать с сайта.

Новые версии Notepad++ поддерживают установку плагинов из репозиториев. Вам достаточно нажать в меню плагины/управление плагинами, в строке поиск набрать NppExec, отметить галочку и нажать кнопку установить. Если же вы пользуетесь более ранней версией npp, то вам следует скачать плагин и распаковать в папку plugins. Обычно она находится по пути ...Notepad++\plugins.

Версии NppExec: Unicode и ANSI
Разработчик рекомендует использовать Unicode версию.

Узнать версию NppExec: Плагины\NppExec\Help/About

Вначале рассмотрим компиляцию из командной строки.

Программа cmd в Windows находится по следующему пути:

%windir%\system32\cmd.exe

Выполнить программу можно нажав поиск cmd и нажав на приложение «командная строка» либо из меню «выполнить», набрав cmd.
Настройки консоли cmd

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

Для изменения свойств по умолчанию выберите «значения по умолчанию».

Вы можете назначить горячие клавиши для вызова командной строки.

Для этого наберите в поиске cmd, щелкните на «Командная строка» правой кнопкой и выберите «перейти к расположению файла. Затем, правой кнопкой на расположении и свойства. Установите курсор в поле «Быстрый вызов» и нажмите на клавиатуре сочетание клавиш, например: Ctrl+Alt+T. Такое сочетание клавиш соответствует вызову терминала Linux Ubuntu и вам не нужно будет заучивать новое. Если хотите, можете задать свое сочетание клавиш. cmd будет вызываться от имени пользователя. Чтобы запустить cmd от имени администратора, нужно набрать cmd в поиске, щелкнуть на нем правой кнопкой мышки и выбрать «Запуск от имени администратора».

cmd.exe — файл, это часть системы, командный интерпретатор системы Windows.

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

Ключи запуска cmd.exe:

/c исполняет команду, заданную строкой, и завершает работу приложения;
/k исполняет команду, заданную строкой, и продолжает работу приложения;
/a — устанавливает вывод в стандарте ANSI;
/u — устанавливает вывод в Юникоде;
/? — вывод справки в командной строке;
Для компиляции из командной строки, вам нужно знать минимальных набор команд.

Для более глубокого изучения вам, скорее всего, понадобятся такие понятия как:
Processes, Threads, Streams, Fibers, семафоры, мьютексы и так далее. Всё то, что связанно с многопоточностью и многозадачностью.

В этой небольшой статье, пока что, таких глубоких знаний не требуется.

Немного о переменных

Вы можете использовать переменные, которые относятся к переменным среды пользователя, к переменным cmd, к переменным программы Notepad++, к переменным плагина NppExec.
Aliases — в общем случае это псевдонимы переменных. Они могут быть использованы для задания короткого имени переменной в определенной области видимости.

В нашем контексте слово «команда» означает команда или программа. Получить список команд вы можете набрав в командной строке «help» без кавычек. Отобразится список команд с их описанием. Получить помощь по определенной команде, вы можете набрав «help имя_команды».

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

Для компиляции программ java, у вас на компьютере должна быть установлена jdk.
«Java Development Kit (сокращенно JDK) — бесплатно распространяемый компанией Oracle Corporation (ранее Sun Microsystems) комплект разработчика приложений на языке Java, включающий в себя компилятор Java (javac)». JDK включает стандартные библиотеки классов Java, примеры, документацию, различные утилиты и исполнительную систему Java (JRE). В состав JDK не входит интегрированная среда разработки на Java, поэтому разработчик, использующий только JDK, вынужден использовать внешний текстовый редактор и компилировать свои программы, используя утилиты командной строки. Скачать её вы можете с сайта Oracle, либо выбрать OpenJDK. Существуют комплекты разработки приложений на Java других производителей, доступные для ряда платформ. Ссылка для скачивания jdk: jdk.java.net/archive

Вот несколько существующих на сегодняшний день jdk: Oracle JDK, OpenJDK by Oracle, AdoptOpenJDK, Red Hat OpenJDK, Azul Zulu, Amazon Corretto. Скачиваете и устанавливаете, в документации об установке всё подробно расписано. Если же вы уже используете IDE — интегрированную среду разработки с уже установленной JDK, то вам остается только найти её на вашем диске. Среды разработки либо включают в комплект поставки одну из версий JDK, либо требуют для своей работы предварительной инсталляции JDK на машине разработчика. Для компиляции и выполнения, вам потребуются файлы: javac.exe — для компиляции и java.exe — для выполнения программы. Заметьте jdk должна быть установлена, потому как при компиляции и выполнении используются ряд файлов ресурсов, таких как библиотеки классов, отладчик и другие ресурсы.

Компиляция из командной строки в упрощенном виде выглядит так:

javac HelloWorld.java
. Почему в упрощенном? Потому как мы не задаем полный путь к компилятору, полный путь к файлу, не указываем другие параметры, такие как имя выходного файла и другие.

Если вы просто выполните такую команду, предварительно ничего не настроив, то скорее всего вы получите ошибку: «javac не является внутренней или внешней командой, исполняемой программой или пакетным файлом». То есть ваша система «не знает» где находится javac и нам нужно явно указать где находится компилятор.

Об установке java читайте в официальной документации.

Где установлена java, вы можете узнать набрав команду в консоли:

where java

Пишем новую строчку:

c:\путь_к_файлу_javac\javac HelloWorld.java с:\папка_на_диске_первая\папка_на_диске_вторая\...\javac HelloWorld.java

Здесь папка_на_диске_первая, папка_на_диске_вторая — это название ваших папок на диске.
То есть это полный путь до файла javac.

Скорее всего вы получите следующую ошибку:

javac: file not found: hello.java Usage: javac <options> <source files> use -help for a list of possible options

В этом случае javac сообщает нам, что нет такого файла hello.java и предлагает ознакомиться с опциями компилятора.

Мы можем решить эту проблему двумя путями. Перейти в каталог в терминале.

cd полный_путь_к_нашему_java_файлу

Либо указать полный путь при компиляции.
с:\папка_на_диске_первая\папка_на_диске_вторая\...\javac с:\путь\HelloWorld.java

Здесь следует сделать уточнение, в данном случае я рассматриваю путь в системах Windows.
В других системах пути прописываются по другому. Более подробно смотрите документацию.

В случае успешной компиляции у вас в каталоге появится файл HelloWorld.class

Выполнить этот файл мы можем командой:

с:\папка_на_диске_первая\папка_на_диске_вторая\...\java -classpath . HelloWorld

В данном случае точка означает текущий пакет, текущий каталог.

В случае не указания -classpath, возможен вывод ошибки:

«Error: Could not find or load main class имя»

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

Мы с вами немного разобрались, как компилировать и запускать java программы из командной строки. Теперь нам нужно сделать тоже самое в Notepad++ при помощи плагина NppExec. Скачиваем и устанавливаем плагин, если он у нас еще не установлен и устанавливаем.

После правильной установки, плагин NppExec появится в меню «Плагины».

NppExec имеет свою собственную консоль наподобие CMD.
По умолчанию приглашение на ввод команд не отображается. Для показа\скрытия консоли выберите: Плагины\NppExec\Show console.
Для получения справки наберите в консоли help и нажмите Enter. Для получения более подробной информации об NppExec наберите в консоли: help npp_exec.

Из help:

Так что, вообще говоря, NppExec — это инструмент. Этот инструмент делает именно то, что вы говорите, без каких-либо предположений, без неявного вызова чего-либо и так далее.

Это может быть критичто при разработке, когда «родная», «умная» консоль о чем-то «догадывается», к примеру в какой системе она запущена и может подставлять свои «умные» значения.

Do _not_ use NPP_EXEC to start a batch file or an executable file in NppExec!

Не используйте команду npp_exec для старта exe файла или bat файла.
Цель NPP_EXEC — выполнить собственный скрипт.
Для старта стороннего приложения напечатайте:
application.exe // в этом случае exe файл с именем application.exe
batchfile.bat // в этом случае batch с именем«batchfile.bat»

Нам остается только создать настройки для компиляции и выполнения. Мы сделаем эти настройки отдельно. Создадим настройки «для компиляции» и создадим настройки «для компиляции и выполнения».

Настройка системных переменных

Для того чтобы не вводить каждый раз полный путь к программе, будь то компилятор,
компоновщик, система сборки и т.д., вы можете установить системные переменные.
Как задаются системные переменные? Вы можете задать их в графическом интерфейсе, из cmd, используя Power Shell, используя regedit.

Как задать системные переменные используя графический интерфейс

Свойства компьютера\Дополнительно\Переменные среды\Переменные среды пользователя для «имя пользователя». Здесь вы можете создать, либо отредактировать имеющуюся переменную среды.

Как задать переменную среды используя командную строку

Для задания переменных окружения, вам нужно иметь права администратора.
сmd
SET

— вывод текущих установленных переменных системного окружения. Команда выводит не полный список.

Другие переменные принимают свои значения динамически:

%CD% - принимает значение текущего каталога.
%DATE% — принимает значение текущей даты.
%TIME% — принимает значение текущего времени.
%RANDOM% — значение случайного числа в диапазоне между 0 и 32767.
%ERRORLEVEL% — текущее значение ERRORLEVEL, специальной переменной, которая используется в качестве признака результата выполнения программы.
%CMDEXTVERSION% значение версии расширенной обработки команд CMD.EXE.
%CMDCMDLINE% — раскрывается в исходную командную строку, которая вызвала командный процессор.

SET переменная=строка

переменная — Имя переменной среды.
строка — Строка символов, присваиваемая указанной переменной.
set имя_переменной

— Показывает текущее значение переменной с именем имя_переменной.
echo %имя_переменной% 

— Выводит значение переменной.

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

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

Выберите Run или Выполнить(Клавиша Win+R)

control sysdm.cpl 

У вас отобразится окно свойств системы. Выберите «дополнительно» и «переменные среды».

Здесь есть два вида переменных среды. Это системные переменные и переменные среды пользователя. Переменные среды пользователя относятся к определенному пользователю системы и его системному окружению. Здесь вы можете задать переменную Path для быстрого доступа к часто используемым программам. Значение переменной представляет из себя строку.
Это набор путей разделенных символом ";".

Переменная среды́ (англ. environment variable) — текстовая переменная операционной системы, хранящая какую-либо информацию — например, данные о настройках системы. Переменные среды́ устанавливаются пользователем или сценариями оболочки.

Вы также можете сделать это с помощью утилиты командной строки для работы с реестром Windows — reg.

reg /?
— получение справки по данной утилите.
REG ADD <имя_раздела> [/v <имя_параметра> | /ve] [/t <тип>] [/s <разделитель>] [/d <данные>] [/f] [/reg:32 | /reg:64]

Пример использования скрипта для добавления системной переменой:
SET KEY=полный_путь_к_разделу_рееестра SET PARM=имя_параметра

Эти переменные сохраняются до окончания текущей командной сессии либо до изменения значения в текущей сессии.

Чтобы добавить переменную path для текущего пользователя(текущий пользователь — пользователь имя которого вы использовали при входе в сеанс):

Устанавливаем значения переменных и используем их в команде

REG ADD ...

Значение Path указываем пути через точку с запятой.
SET KEY=HKEY_CURRENT_USER\Environment SET PARAM=%systemdrive%\путь;d:\; REG ADD %KEY% /v Path /d %PARAM%

Нам нужно указать в значении PARAM все пути, которые у нас были уже установлены и путь к компилятору.

HKEY_CURRENT_USER — это ветка текущего пользователя в реестре.
Environment — здесь хранятся переменные среды.

Предупреждение: «Так вы работаете с системным реестром. Обязательно сделайте копию реестра и создайте контрольную точку восстановления вашей системы». Безопаснее будет устанавливать системные переменные и переменные среды пользователя штатными средствами.

Обязательно ознакомьтесь с материалами:

Как создать резервную копию и восстановить реестр в Windows
Применимо к: Windows 7, Windows 8.1, Windows 10 (Официальная поддержка Microsoft):
support.microsoft.com/ru-ru/help/322756

Создание точки восстановления системы
Применимо к: Windows 10
support.microsoft.com/ru-ru/help/4027538/windows-create-a-system-restore-point

mrt 
— запуск средства удаления вредоносных программ Malicious Software Removal Tool
Настройки NppExec в Notepad++

Открываем Nonepad++.
Нам нужно создать скрипты cmd.
Выбираем Плагины\NppExec\
Отключяем «Console Command History»;
Включаем «Save all files on execute»;
Включаем «Follow $(CURRENT_DIRECTORY)»

Выбираем Плагины\NppExec\Execute или нажимаем F6.

В открывшемся окне пишем:

cd "$(CURRENT_DIRECTORY)" javac $(FILE_NAME) 

Нажимаем Save… и в поле ScriptNme пишем: CompileJava.
Данный скрипт будет выполнять наш код java.

Снова выбираем Плагины\NppExec\Execete или нажимаем F6.

cd "$(CURRENT_DIRECTORY)" java $(NAME_PART)

Нажимаем Save… и пишем имя «RunJava». Данный код, написанный выше, будет компилировать код Java.

Повторяем тоже самое и пишем (Для компиляции и выполнения):

cd "$(CURRENT_DIRECTORY)" javac $(FILE_NAME) if $(EXITCODE) !=0 goto exit java $(NAME_PART) :exit

Сохраняем как CompileAndRunJava.
Нажмем кнопку «ОК».
cd "$(CURRENT_DIRECTORY)"

— перейти в текущую папку. В данном случае текущей будет та папка, куда вы сохранили текстовый файл.
javac $(FILE_NAME) 

— компилировать файл с именем находящимся в переменной FILE_NAME.

В нашем случае это имя сохраненного файла. Далее следует условие.

if $(EXITCODE) !=0 goto exit 

— если наш код не возвратил нормальное завершение == 0, то выйти.
java $(NAME_PART) 

— выполнить наш скомпилированный файл.

Далее мы свяжем наши скрипты с макросами.

В Notepad++ выбираем Плагины (Plugins) \NppExec \Advanced options…

Ставим галочку напротив «Place to the Macros submenu». В раскрывающемся списке «Associated script:» выбираем нужный нам скрипт и даем ему имя в поле «Item Name». И нажимаем Add/Modify. Проделываем это для всех наших скриптов, нажимаем «Ок» и перезапускаем Notepad.

Решение проблем с неправильным выводом русских букв в консоли:
Плагины (Plugins)/ NppExec / Console Output

Ставим нужные нам кодировки ввода и вывода.

Отключение сообщений внутренней консоли: Плагины (Plugins) / NppExec / No internal messages.

В случае появления сообщение при выполнении файла ИмяНашегоКласса.class, о том что main не найден, просто меняем наш скрипт: То есть нам нужно указать либо полный путь к пакету либо указать текущий пакет символом «.».

У нас получится такой скрипт:

cd "$(CURRENT_DIRECTORY)" java . $(NAME_PART)

Если же cmd не находит файла javа, то указываем к нему полный путь.
ИмяДиска:\папка1\папка2\...\java. $(NAME_PART).

Слегка улучшим наш код:

npp_save cd "$(CURRENT_DIRECTORY)" путь_к_javac\javac $(FILE_NAME) if $(EXITCODE) !=0 goto exit путь_к_java\java . $(NAME_PART) :exit 

Скрипт компиляции Perl:
 npp_save CD $(CURRENT_DIRECTORY) perl.exe -c -w "$(FILE_NAME)" 

Объяснение скрипта:
npp_save — внутренняя команда npp, сохранить
CD $(CURRENT_DIRECTORY) — переход к текущей папке
perl.exe -c -w "$(FILE_NAME)" выполнение perl.exe -c -w
пример: perl.exe -c -w test.pl
-c означает compile, компилировать
-w означает warnings, выводить предупреждения

Скрипт для компиляции с#:

 cd "$(CURRENT_DIRECTORY)" Путь_к_csc\csc $(FILE_NAME) if $(EXITCODE) !=0 goto exit $(NAME_PART) :exit

Здесь Путь_к_csc — это путь к вашему csc.exe
Обычно он выглядит так: %systemdrive%\Windows\Microsoft.NET\Framework64\версия\
Для 32-битной версии — Framework32. Вы можете не указывать полный путь, а добавить путь к вашей системной переменной.

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

 CD другой_диск:\папка1\папка2
.

Для смены диска вам нужно применять CD c ключем /D или явным образом указывать имя_диска: после ввода команды.

Пример 1:

cd e:\папка1\папка2 e:

Пример 2:

cd /D e:\папка1\папка2

здесь е — имя диска, которое отличается от текущего.

Методика выявления ошибок компиляции

У вас на этапе подготовки могут возникать различного рода ошибки и первое что вам нужно выяснить — это к чему относится ваша ошибка. То есть локализировать проблему. Для этого выясняем на каком уровне возникает проблема. Относится ли она к системе, к командной оболочке, к компилятору, текстовому редактору или к опечатке, ошибке в скрипте.
  1. Проверить запускается ли cmd и отрабатывают ли простейшие команды.
  2. Проверить ваш компилятор на предмет компиляции из командной строки.
  3. Проверить системные переменные
  4. Проверить установлен ли плагин NppExec
  5. Запускает ли он скрипты
  6. Связанны ли скрипты с макросами NppExec.
  7. Отрабатывают ли макросы совместно со скриптами.

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

Теперь, когда мы создали, отладили и наши скрипты, убедились, что они работают предсказуемо, создали макросы для них, мы можем связать их с клавишами быстрого вызова. Как это сделать?
Мы не назначили горячие клавиши при создании скриптов, потому как назначение их, клавиш быстрого вызова, в окне создания скрипта ограничены.

Нам не предоставляется большого выбора из сочетаний клавиш на клавиатуре. К тому-же данные комбинации клавиш у нас могут быть заняты. Сделать назначение горячих клавиш или клавиш быстрого вызова мы можем в меню: Максросы/Измен.соч.клав./Удалить макро.

Какие у вас могут быть резоны познакомиться с командной строкой?

Вам может быть не придется использовать её часто. Но знать о её существовании просто необходимо. Например, на начальном этапе обучения вам нужно познакомиться с опциями компилятора, компоновщика, системы сборки и протестировать их. Вам понадобятся знание того, какие аргументы и ключи принимает программа на входе и что она может возвращать.
Не всегда у вас будет возможность использовать умные и дорогие IDE. И не потому что они могут оказаться слишком дороги, а по той причине, что вы просто не сможете установить их на некоторые системы. В других системах этого могут требовать меры безопасности. Вам может понадобится протестировать каждый модуль, такой как компилятор, линковщик, компановщик, систему сборки, систему контроля версий отдельно. То есть каждую часть вашей системы разработки. Вам может понадобится проверить корректность их работы по отдельности. В некоторых случаях вам может понадобится использовать другой компилятор с вашей IDE или любой другой отдельный модуль. Собирание кубиков графического интерфейса в IDE не делает из вас программиста. Вам понадобятся знания языков, знания архитектуры, знание некоторых скриптов, математические знания и т.д, то есть умение использовать в работе многих инструментов. В различных терминалах и консолях командная строка работает по разному. Это зависит от вашей консоли или терминала. Общие принципы работы для некоторых схожи, но для некоторых могут отличаться очень сильно. Командная строка — это только дополнительный инструмент в ваших руках, а насколько вы его эффективно использовать зависит от вас. В случае, когда вы занимаетесь opensource проектом, вы сможете предоставить командные файлы вашим пользователям для сборки, для тестирования проекта, развертывания проекта и тд. Для команды разработчиков такой подход может помочь более эффективно взаимодействовать. При этом это может оказаться выходом за пределы «комфорта» и нести дополнительные риски. Но использование любых инструментов несет в себе риски, во многом это определяется надежностью инструментов и умением их использовать.

В чем преимущество такого подхода к компиляции? Для обучающихся это приобретение новых навыков работы с командной строкой и связывание кода скриптов с текстовым редактором, изучение компиляции из командной строки. Экономия времени на тестировании небольшого кода без загрузки тяжелых IDE. В некоторых случаях, когда нет возможности установить полноценную IDE такой подход может выручить. Изучение скриптов для командной строки позволяет компилировать из исходников там где вообще нет никакой возможности применять UI, например на серверах. И хотя там не будет возможности использовать текстовые редакторы типа Notepad++, будет возможность использовать текстовые процессоры типа vi, vim, emacs, nano и тд. Основные принципы работы остаются теми же.

Мы с вами, несколько обзорно, познакомились с компиляцией из командной строки, с написанием скриптов для этого, с заданием и использованием системных переменных,
со связыванием кода скриптов с макросами Notepad++, c внутренними переменными Notepad++. Надеюсь данная статья будет полезна обучающимся. Здесь я описал подробно общие методики. Прежде чем обращаться в службу поддержки или отправлять баги, вам следует самостоятельно все выяснить. Во многих случаях может оказаться, что это ваша ошибка или опечатка, а не инженеров разработчиков.

Современные IDE имеют собственные консоли или эмуляторы консолей. Так что вам не обязательно использовать cmd для сборки. К тому же кроме cmd существует достаточно много подобных инструментов. Изучение работы скриптов может помочь вам в будущем в освоении таких инструментов, как системы сборки, компиляторов, компоновщиков, линковщиков. К тому же некоторые SDK не предоставляют графического пользовательского интереса(GUI), использование GUI может быть запрещено политикой безопасности, так как несет дополнительные угрозы в критических для этого областях применения.

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

<<< Мои публикации на Habr >>>

Полезные ссылки

Как создать резервную копию и восстановить реестр в Windows
Применимо к: Windows 7Windows 8.1Windows 10 (Офиальная поддержка Microsoft)
support.microsoft.com/ru-ru/help/322756

Материалы для дополнительного изучения

notepad-plus-plus.org

Управление Java classpath (UNIX и Mac OS X)

Управление Java classpath (Windows)

Java — the Java application launcher

Для ознакомления:
Избавляемся от «исторических причин» в cmd.exe
habr.com/ru/post/260991

Сравнение командных оболочек
ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D1%8B%D1%85_%D0%BE%D0%B1%D0%BE%D0%BB%D0%BE%D1%87%D0%B5%D0%BA

Компиляция вашей первой программы в C++ | Уроки С++

  Обновл. 17 Сен 2020  | 

Перед написанием нашей первой программы мы еще должны кое-что узнать.

Теория

Во-первых, несмотря на то, что код ваших программ находится в файлах .cpp, эти файлы добавляются в проект. Проект содержит все необходимые файлы вашей программы, а также сохраняет указанные вами настройки вашей IDE. Каждый раз, при открытии проекта, он запускается с того момента, на котором вы остановились в прошлый раз. При компиляции программы, проект говорит компилятору и линкеру, какие файлы нужно скомпилировать, а какие связать. Стоит отметить, что файлы проекта одной IDE не будут работать в другой IDE. Вам придется создать новый проект (в другой IDE).

Во-вторых, есть разные типы проектов. При создании нового проекта, вам нужно будет выбрать его тип. Все проекты, которые мы будем создавать на данных уроках, будут консольного типа. Это означает, что они запускаются в консоли (аналог командной строки). По умолчанию, консольные приложения не имеют графического интерфейса пользователя — GUI (сокр. от «Graphical User Interface») и компилируются в автономные исполняемые файлы. Это идеальный вариант для изучения языка C++, так как он сводит всю сложность к минимуму.

В-третьих, при создании нового проекта большинство IDE автоматически добавят ваш проект в рабочее пространство. Рабочее пространство — это своеобразный контейнер, который может содержать один или несколько связанных проектов. Несмотря на то, что вы можете добавить несколько проектов в одно рабочее пространство, все же рекомендуется создавать отдельное рабочее пространство для каждой программы. Это намного упрощает работу для новичков.

Традиционно, первой программой на новом языке программирования является всеми известная программа «Hello, world!». Мы не будем нарушать традиции 🙂

Пользователям Visual Studio

Для создания нового проекта в Visual Studio 2019, вам нужно сначала запустить эту IDE, затем выбрать "Файл" > "Создать" > "Проект":

Дальше появится диалоговое окно, где вам нужно будет выбрать "Консольное приложение Windows" из вкладки "Visual C++" и нажать "ОК":

Также вы можете указать имя проекта (любое) и его расположение (рекомендую ничего не менять) в соответствующих полях.

В текстовом редакторе вы увидите, что уже есть некоторый текст и код — удалите его, а затем напечатайте или скопируйте следующий код:

#include <iostream> int main() { std::cout << "Hello, world!" << std::endl; return 0; }

#include <iostream>

int main()

{

std::cout << "Hello, world!" << std::endl;

return 0;

}

Вот, что у вас должно получиться:

ВАЖНОЕ ПРИМЕЧАНИЕ: Строка #include "pch.h" требуется только для пользователей Visual Studio 2017. Если вы используете Visual Studio 2019 (или более новую версию), то не нужно писать эту строку вообще.

Чтобы запустить программу в Visual Studio, нажмите комбинацию Ctrl+F5. Если всё хорошо, то вы увидите следующее:

Это означает, что компиляция прошла успешно и результат выполнения вашей программы следующий:

Hello, world!

Чтобы убрать строку «…завершает работу с кодом 0…», вам нужно перейти в "Отладка" > "Параметры":

Затем "Отладка" > "Общие" и поставить галочку возле "Автоматически закрыть консоль при остановке отладки" и нажать "ОК":

Тогда ваше консольное окно будет выглядеть следующим образом:


Готово! Мы научились компилировать программу в Visual Studio.

Пользователям Code::Blocks

Чтобы создать новый проект, запустите Code::Blocks, выберите "File" > "New" > "Project":

Затем появится диалоговое окно, где вам нужно будет выбрать "Console application" и нажать "Go":

Затем выберите язык "C++" и нажмите "Next":

Затем нужно указать имя проекта и его расположение (можете создать отдельную папку Projects) и нажать "Next":

В следующем диалоговом окне нужно будет нажать "Finish".

После всех этих манипуляций, вы увидите пустое рабочее пространство. Вам нужно будет открыть папку Sources в левой части экрана и дважды кликнуть по main.cpp:

Вы увидите, что программа «Hello, world!» уже написана!

Для того, чтобы скомпилировать ваш проект в Code::Blocks, нажмите Ctrl+F9, либо перейдите в меню "Build" и выберите "Build". Если всё пройдет хорошо, то вы увидете следующее во вкладке "Build log":

Это означает, что компиляция прошла успешно!

Чтобы запустить скомпилированную программу, нажмите Ctrl+F10, либо перейдите в меню "Build" и выберите "Run". Вы увидите следующее окно:

Это результат выполнения вашей программы.

Пользователям командной строки

Вставьте следующий код в текстовый файл с именем HelloWorld.cpp:

#include <iostream> int main() { std::cout << "Hello, world!" << std::endl; return 0; }

#include <iostream>

int main()

{

std::cout << "Hello, world!" << std::endl;

return 0;

}

В командной строке напишите:

g++ -o HelloWorld HelloWorld.cpp

Эта команда выполнит компиляцию и линкинг файла HelloWorld.cpp. Для запуска программы напишите:

HelloWorld

Или:

./HelloWorld

И вы увидите результат выполнения вашей программы.

Пользователям веб-компиляторов

Вставьте следующий код в рабочее пространство:

#include <iostream> int main() { std::cout << "Hello, world!" << std::endl; return 0; }

#include <iostream>

int main()

{

std::cout << "Hello, world!" << std::endl;

return 0;

}

Затем нажмите "Run". Вы должны увидеть результат в окне выполнения.

Пользователям других IDE

Вам нужно:

Шаг №1: Создать консольный проект.

Шаг №2: Добавить файл .cpp в проект (если нужно).

Шаг №3: Вставить следующий код в файл .cpp:

#include <iostream> int main() { std::cout << "Hello, world!" << std::endl; return 0; }

#include <iostream>

int main()

{

std::cout << "Hello, world!" << std::endl;

return 0;

}

Шаг №4: Скомпилировать проект.

Шаг №5: Запустить проект.

Если компиляция прошла неудачно (a.k.a. «О Боже, что-то пошло не так!»)

Всё нормально, без паники. Скорее всего, это какой-то пустяк.

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

   Во-вторых, просмотрите Урок №7 — там есть решения наиболее распространенных проблем.

   Если всё вышесказанное не помогло — «загуглите» проблему. С вероятностью 90% кто-то уже сталкивался с этим раньше и нашел решение.

Заключение

Поздравляем, вы написали, скомпилировали и запустили свою первую программу на языке C++! Не беспокойтесь, если вы не понимаете, что означает весь этот код, приведенный выше. Мы детально всё это рассмотрим на следующих уроках.

Оценить статью:

Загрузка...

Поделиться в социальных сетях:

C++ - Компиляция с помощью Visual C ++ (командной строки)

пример

Для программистов, поступающих из GCC или Clang в Visual Studio, или программистов, более удобных с командной строкой в ​​целом, вы можете использовать компилятор Visual C ++ из командной строки, а также из среды IDE.

Если вы хотите скомпилировать свой код из командной строки в Visual Studio, сначала необходимо настроить среду командной строки. Это можно сделать, открыв Visual Studio Command Prompt / Developer Command Prompt / x86 Native Tools Command Prompt / x64 Native Tools Command Prompt или аналогичная (как предоставляется вашей версией Visual Studio) или в командной строке, путем перехода к подкаталог VC каталога установки компилятора (обычно \Program Files (x86)\Microsoft Visual Studio x\VC , где x - номер версии (например, 10.0 для 2010 или 14.0 для 2015) и запуск командного файла VCVARSALL с помощью параметр командной строки, указанный здесь .

Обратите внимание, что в отличие от GCC, Visual Studio не предоставляет интерфейс для компоновщика ( link.exe ) через компилятор ( cl.exe ), но вместо этого предоставляет компоновщик как отдельную программу, которую компилятор вызывает при выходе. cl.exe и link.exe могут использоваться отдельно с разными файлами и параметрами, иначе cl может передаваться файлы и параметры для link если обе задачи выполняются вместе. Любые параметры привязки, указанные для cl будут переведены в параметры link , и любые файлы, не обработанные cl будут переданы непосредственно в link . Поскольку это в основном простое руководство по компиляции с командной строкой Visual Studio, аргументы для link не будут описаны в настоящее время; если вам нужен список, см. здесь .

Обратите внимание, что аргументы для cl чувствительны к регистру, а аргументы для link - нет.

[Следует иметь в виду, что в некоторых из следующих примеров при указании абсолютных имен пути используется переменная «текущий каталог» оболочки Windows, %cd% . Для тех, кто не знаком с этой переменной, он расширяется до текущего рабочего каталога. Из командной строки это будет каталог, в котором вы были, когда вы запускаете cl , и указывается в командной строке по умолчанию (если ваша командная строка - C:\src> , например, то %cd% - C:\src\ ).]


Предполагая, что в текущей папке имеется один исходный файл с именем main.cpp , команда для компиляции и ссылки на неоптимизированный исполняемый файл (полезный для начальной разработки и отладки) является (используйте любой из следующих):

cl main.cpp
 // Generates object file "main.obj".
 // Performs linking with "main.obj".
 // Generates executable "main.exe".
 
 cl /Od main.cpp
 // Same as above.
 // "/Od" is the "Optimisation: disabled" option, and is the default when no /O is specified.
 

Предположим, что дополнительный файл-источник «niam.cpp» в том же каталоге использует следующее:

cl main.cpp niam.cpp
 // Generates object files "main.obj" and "niam.obj".
 // Performs linking with "main.obj" and "niam.obj".
 // Generates executable "main.exe".
 

Вы также можете использовать подстановочные знаки, как и следовало ожидать:

cl main.cpp src\*.cpp
 // Generates object file "main.obj", plus one object file for each ".cpp" file in folder
 // "%cd%\src".
 // Performs linking with "main.obj", and every additional object file generated.
 // All object files will be in the current folder.
 // Generates executable "main.exe".
 

Чтобы переименовать или переместить исполняемый файл, выполните одно из следующих действий:

cl /o name main.cpp
 // Generates executable named "name.exe".
 
 cl /o folder\ main.cpp
 // Generates executable named "main.exe", in folder "%cd%\folder".
 
 cl /o folder\name main.cpp
 // Generates executable named "name.exe", in folder "%cd%\folder".
 
 cl /Fename main.cpp
 // Same as "/o name".
 
 cl /Fefolder\ main.cpp
 // Same as "/o folder\".
 
 cl /Fefolder\name main.cpp
 // Same as "/o folder\name".
 

Оба параметра /o и /Fe передают свой параметр (назовем его o-param ), чтобы link как /OUT:o-param , добавив соответствующее расширение (обычно .exe или .dll ) в «имя» o-param s по мере необходимости. Хотя оба /o и /Fe , насколько мне известно, идентичны по функциональности, последний предпочтительнее для Visual Studio. /o отмечен как устаревший и, как представляется, в основном предоставляется программистам, более знакомым с GCC или Clang.

Обратите внимание, что, хотя пространство между /o и указанной папкой и / или именем является необязательным, между /Fe и указанным папок и / или именем не может быть пробела.


Аналогично, для создания оптимизированного исполняемого файла (для использования в производстве) используйте:

cl /O1 main.cpp
 // Optimise for executable size. Produces small programs, at the possible expense of slower
 // execution.
 
 cl /O2 main.cpp
 // Optimise for execution speed. Produces fast programs, at the possible expense of larger
 // file size.
 
 cl /GL main.cpp other.cpp
 // Generates special object files used for whole-program optimisation, which allows CL to
 // take every module (translation unit) into consideration during optimisation.
 // Passes the option "/LTCG" (Link-Time Code Generation) to LINK, telling it to call CL during
 // the linking phase to perform additional optimisations. If linking is not performed at this
 // time, the generated object files should be linked with "/LTCG".
 // Can be used with other CL optimisation options.
 

Наконец, чтобы создать оптимизированный исполняемый файл для конкретной платформы (для использования на производстве на машине с указанной архитектурой), выберите соответствующую командную строку или параметр VCVARSALL для целевой платформы. link должна обнаружить желаемую платформу из объектных файлов; если нет, используйте параметр /MACHINE чтобы явно указать целевую платформу.

// If compiling for x64, and LINK doesn't automatically detect target platform:
 cl main.cpp /link /machine:X64
 

Любое из вышеперечисленного даст исполняемый файл с именем, указанным /o или /Fe , или если ни один из них не указан, с именем, идентичным первому источнику или объекту, указанному компилятору.

cl a.cpp b.cpp c.cpp
 // Generates "a.exe".
 
 cl d.obj a.cpp q.cpp
 // Generates "d.exe".
 
 cl y.lib n.cpp o.obj
 // Generates "n.exe".
 
 cl /o yo zp.obj pz.cpp
 // Generates "yo.exe".
 

Чтобы скомпилировать файл (ы) без ссылки, используйте:

cl /c main.cpp
 // Generates object file "main.obj".
 

Это говорит cl для выхода без вызова link и создает объектный файл, который позже может быть связан с другими файлами для создания двоичного файла.

cl main.obj niam.cpp
 // Generates object file "niam.obj".
 // Performs linking with "main.obj" and "niam.obj".
 // Generates executable "main.exe".
 
 link main.obj niam.obj
 // Performs linking with "main.obj" and "niam.obj".
 // Generates executable "main.exe".
 

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

cl /EHsc main.cpp
 // "/EHsc" specifies that only standard C++ ("synchronous") exceptions will be caught,
 // and `extern "C"` functions will not throw exceptions.
 // This is recommended when writing portable, platform-independent code.
 
 cl /clr main.cpp
 // "/clr" specifies that the code should be compiled to use the common language runtime,
 // the .NET Framework's virtual machine.
 // Enables the use of Microsoft's C++/CLI language in addition to standard ("native") C++,
 // and creates an executable that requires .NET to run.
 
 cl /Za main.cpp
 // "/Za" specifies that Microsoft extensions should be disabled, and code should be
 // compiled strictly according to ISO C++ specifications.
 // This is recommended for guaranteeing portability.
 
 cl /Zi main.cpp
 // "/Zi" generates a program database (PDB) file for use when debugging a program, without
 // affecting optimisation specifications, and passes the option "/DEBUG" to LINK.
 
 cl /LD dll.cpp
 // "/LD" tells CL to configure LINK to generate a DLL instead of an executable.
 // LINK will output a DLL, in addition to an LIB and EXP file for use when linking.
 // To use the DLL in other programs, pass its associated LIB to CL or LINK when compiling those
 // programs.
 
 cl main.cpp /link /LINKER_OPTION
 // "/link" passes everything following it directly to LINK, without parsing it in any way.
 // Replace "/LINKER_OPTION" with any desired LINK option(s).
 

Для тех, кто более знаком с системами * nix и / или GCC / Clang, cl , link и другими инструментами командной строки Visual Studio, могут принимать параметры, указанные с помощью дефиса (например, -c ), вместо косой черты (например, /c ). Кроме того, Windows распознает либо косую черту, либо обратную косую черту как допустимый разделитель путей, поэтому можно использовать также пути в стиле nix. Это упрощает преобразование простых команд компилятора из g++ или clang++ в cl , или наоборот, с минимальными изменениями.

g++ -o app src/main.cpp
 cl -o app src/main.cpp
 

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

Если вам нужны специальные языковые функции для вашего кода, требуется определенная версия MSVC. Из Visual C ++ 2015 Update 3 можно выбрать версию стандарта для компиляции с помощью флага /std . Возможные значения: /std:c++14 и /std:c++latest ( /std:c++17 скоро появится).

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




Компиляция / выполнение исходного файла C# в командной строке

CSC.exe-это компилятор CSharp, включенный в .NET Framework, и может использоваться для компиляции из командной строки. Выход может быть исполняемым (.exe) если вы используете /target:exe или DLL, если вы используете /target:library. КДВ.exe-файла можно найти в .Framework каталога, например, для .Net 3.5 с, c:\windows\Microsoft.NET\Framework\v3.5\.

, чтобы запустить его, сначала откройте командную строку (нажмите кнопку Пуск... затем введите cmd.exe). Затем может потребоваться компакт-диск в каталог, содержащий исходные файлы.

Run компилятор C# выглядит так:

 c:\windows\Microsoft.NET\Framework\v3.5\bin\csc.exe /t:exe /out:MyApplication.exe MyApplication.cs ... 

(все на одной строке)

если у вас есть несколько исходных модулей для компиляции, вы можете поместить его в ту же командную строку. Если у вас есть другие сборки для ссылки, используйте /r:AssemblyName.dll .

убедитесь, что у вас есть статический метод Main (), определенный в одном из ваших классов, чтобы действовать как "точка входа".

чтобы запустить полученный EXE, просто введите MyApplication следовал по <ENTER> в командной строке.

в этой статье на MSDN более подробно рассматриваются параметры компилятора командной строки. Вы можете внедрять ресурсы, устанавливать значки, подписывать сборки - все, что вы можете сделать в Visual Studio.

если у вас установлена Visual Studio, в меню Пуск (в разделе Visual Studio Tools) вы можете открыть "командную строку Visual Studio", которая настроит все необходимые переменные среды и пути для компиляции командной строки.

пока очень удобно знать об этом, вы должны объединить его со знанием какого-то инструмента сборки, такого как NAnt, MSBuild,FinalBuilder etc. Эти инструменты обеспечивают полную среду сборки, а не только базовый компилятор.

на Mac

на Mac синтаксис похож, только компилятор C sharp просто называется csc:

$ csc /target:exe /out:MyApplication.exe MyApplication.cs ... 

затем запустить его :

$ mono MyApplication.exe 

Построение из командной строки с помощью csc.exe

  • Чтение занимает 3 мин

В этой статье

Чтобы вызвать компилятор C#, следует ввести имя соответствующего исполняемого файла (csc.exe) в командной строке.You can invoke the C# compiler by typing the name of its executable file (csc.exe) at a command prompt.

Если используется окно Командная строка разработчика для Visual Studio, все необходимые переменные среды устанавливаются автоматически.If you use the Developer Command Prompt for Visual Studio window, all the necessary environment variables are set for you. Дополнительные сведения о получении доступа к этому инструменту см. в статье Командная строка разработчика для Visual Studio.For information on how to access this tool, see the Developer Command Prompt for Visual Studio topic.

Если используется стандартное окно командной строки, необходимо изменить путь к файлу csc.exe, прежде чем вызывать его из любого подкаталога на компьютере.If you use a standard Command Prompt window, you must adjust your path before you can invoke csc.exe from any subdirectory on your computer. Чтобы задать соответствующие переменные среды для поддержки построения из командной строки, необходимо запустить пакетный файл VsDevCmd.bat.You also must run VsDevCmd.bat to set the appropriate environment variables to support command-line builds. Дополнительные сведения о файле VsDevCmd.bat, включая инструкции по его поиску и запуску, см. в разделе Практическое руководство. Настройка переменных среды для командной строки Visual Studio.For more information about VsDevCmd.bat, including instructions for how to find and run it, see How to set environment variables for the Visual Studio Command Line.

Если на вашем компьютере установлен только пакет средств разработки программного обеспечения для Windows, компилятор C# можно использовать из командной строки SDK, которая открывается через пункт меню Microsoft .NET Framework SDK.If you're working on a computer that has only the Windows Software Development Kit (SDK), you can use the C# compiler at the SDK Command Prompt, which you open from the Microsoft .NET Framework SDK menu option.

Для программного построения программ C# можно также использовать средство MSBuild.You can also use MSBuild to build C# programs programmatically. Дополнительные сведения см. в разделе MSBuild.For more information, see MSBuild.

Обычно исполняемый файл csc.exe расположен в папке Microsoft.NET\Framework\ <Version> в каталоге Windows.The csc.exe executable file usually is located in the Microsoft.NET\Framework\<Version> folder under the Windows directory. Расположение файла может зависеть от конкретной конфигурации компьютера.Its location might vary depending on the exact configuration of a particular computer. Если на компьютере установлено несколько версий .NET Framework, будет несколько версий этого файла.If more than one version of the .NET Framework is installed on your computer, you'll find multiple versions of this file. Дополнительные сведения о подобных вариантах установки см. в разделе Практическое руководство. Определение установленных версий платформы .NET Framework.For more information about such installations, see How to: determine which versions of the .NET Framework are installed.

Совет

При сборке проекта в интегрированной среде разработки Visual Studio можно открыть команду csc и связанные с ней параметры компилятора в окне Вывод.When you build a project by using the Visual Studio IDE, you can display the csc command and its associated compiler options in the Output window. Чтобы отобразить эту информацию, следуйте инструкциям в разделе Практическое руководство. Просмотр, сохранение и настройка файлов журнала сборки для изменения уровня детализации журнала на Обычный или Подробный.To display this information, follow the instructions in How to: View, Save, and Configure Build Log Files to change the verbosity level of the log data to Normal or Detailed. После сборки проекта выполните поиск по слову csc в окне Вывод, чтобы найти информацию о запуске компилятора C#.After you rebuild your project, search the Output window for csc to find the invocation of the C# compiler.

Содержание разделаIn this topic

Правила синтаксиса командной строки для компилятора C#Rules for command-line syntax for the C# compiler

Компилятор C# использует следующие правила при обработке аргументов, вводимых в командной строке операционной системы.The C# compiler uses the following rules when it interprets arguments given on the operating system command line:

  • Аргументы разделяются пробелами (пробел или табуляция).Arguments are delimited by white space, which is either a space or a tab.

  • Символ каретки (^) не воспринимается как escape-символ или разделитель.The caret character (^) is not recognized as an escape character or delimiter. Этот символ обрабатывается синтаксическим анализатором командной строки в операционной системе, прежде чем передается в массив argv программы.The character is handled by the command-line parser in the operating system before it's passed to the argv array in the program.

  • Строка, заключенная в двойные прямые кавычки ("строка"), обрабатывается как один аргумент, независимо от пробельных символов, которые могут в ней присутствовать.A string enclosed in double quotation marks ("string") is interpreted as a single argument, regardless of white space that is contained within. Строку в кавычках можно встроить в аргумент.A quoted string can be embedded in an argument.

  • Символ двойной кавычки после обратной косой черты (\") обрабатывается как символ двойной кавычки литерала (").A double quotation mark preceded by a backslash (\") is interpreted as a literal double quotation mark character (").

  • Символы обратной косой черты обрабатываются буквально, если только им не предшествует двойная кавычка.Backslashes are interpreted literally, unless they immediately precede a double quotation mark.

  • Если после четного числа символов обратной косой черты стоит двойная кавычка, в массив argv помещается по одному символу обратной косой черты () для каждой пары символов обратной косой черты (\), а двойная кавычка (") обрабатывается как разделитель строки.If an even number of backslashes is followed by a double quotation mark, one backslash is put in the argv array for every pair of backslashes, and the double quotation mark is interpreted as a string delimiter.

  • Если после нечетного числа символов обратной косой черты стоит двойная кавычка, в массив argv помещается по одному символу обратной косой черты () для каждой пары символов обратной косой черты (\), а двойная кавычка (") "изолируется" с помощью оставшихся косых черт.If an odd number of backslashes is followed by a double quotation mark, one backslash is put in the argv array for every pair of backslashes, and the double quotation mark is "escaped" by the remaining backslash. В результате литеральный символ двойной кавычки (") добавляется в массив argv.This causes a literal double quotation mark (") to be added in argv.

Примеры командных строк для компилятора C#Sample command lines for the C# compiler

  • Компиляция File.cs и создание File.exe:Compiles File.cs producing File.exe:

    csc File.cs 
  • Компиляция File.cs и создание File.dll:Compiles File.cs producing File.dll:

    csc -target:library File.cs 
  • Компиляция File.cs и создание My.exe:Compiles File.cs and creates My.exe:

    csc -out:My.exe File.cs 
  • Компиляция всех файлов C# в текущем каталоге с включенными оптимизациями и определение символа DEBUG.Compiles all the C# files in the current directory with optimizations enabled and defines the DEBUG symbol. Выводится файл File2.exe:The output is File2.exe:

    csc -define:DEBUG -optimize -out:File2.exe *.cs 
  • Компиляция всех файлов C# в текущем каталоге с созданием отладочной версии File2.dll.Compiles all the C# files in the current directory producing a debug version of File2.dll. Логотипы и предупреждения не отображаются:No logo and no warnings are displayed:

    csc -target:library -out:File2.dll -warn:0 -nologo -debug *.cs 
  • Компиляция всех файлов C# в текущем каталоге в файл Something.xyz (библиотеку DLL):Compiles all the C# files in the current directory to Something.xyz (a DLL):

    csc -target:library -out:Something.xyz *.cs 

Различия между выходными данными компилятора C# и компилятора C++Differences between C# compiler and C++ compiler output

В результате вызова компилятора C# файлы объектов (OBJ-файлы) не создаются; выходные файлы создаются непосредственно.There are no object (.obj) files created as a result of invoking the C# compiler; output files are created directly. По этой причине компилятору C# не требуется компоновщик.As a result of this, the C# compiler does not need a linker.

См. также разделSee also

Как скомпилировать один файл класса C # в .exe с помощью командной строки?

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
  6. О компании
.

Компиляция нескольких файлов C ++ в командной строке?

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями
.

Как скомпилировать и запустить C / C ++ в консоли Unix / терминале Mac?

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд
.

Для декомпиляции скомпилированного файла справки из командной строки

  • 2 минуты на чтение

В этой статье

  • В командной строке или с помощью команды Выполнить введите:

      - декомпилировать папку chm  

    , где -decompile - это переключатель, папка - это имя целевой папки, в которую вы хотите скопировать декомпилированные файлы, а chm - это имя скомпилированной справки (.chm) файл, который нужно декомпилировать.

Примечание

Параметры командной строки на стороне клиента являются частью исполняемой программы HTML Help (Hh.exe) и поэтому работают, когда HTML Help Workshop не настроен.

О переключателях командной строки

.

Сборка из командной строки с помощью csc.exe | Документы Microsoft

  • 3 минуты на чтение

В этой статье

Вы можете вызвать компилятор C #, введя имя его исполняемого файла ( csc.exe ) в командной строке.

Если вы используете окно командной строки разработчика для Visual Studio , все необходимые переменные среды будут установлены для вас.Для получения информации о том, как получить доступ к этому инструменту, см. Тему Командная строка разработчика для Visual Studio.

Если вы используете стандартное окно командной строки, вы должны скорректировать свой путь, прежде чем сможете вызывать csc.exe из любого подкаталога на вашем компьютере. Вы также должны запустить VsDevCmd.bat , чтобы установить соответствующие переменные среды для поддержки сборок из командной строки. Дополнительные сведения о VsDevCmd.bat , включая инструкции по его поиску и запуску, см. В разделе Как задать переменные среды для командной строки Visual Studio.

Если вы работаете на компьютере, на котором установлен только Windows Software Development Kit (SDK), вы можете использовать компилятор C # в командной строке SDK , которую вы открываете из пункта меню Microsoft .NET Framework SDK .

Вы также можете использовать MSBuild для программного построения программ C #. Дополнительные сведения см. В разделе MSBuild.

Исполняемый файл csc.exe обычно находится в папке Microsoft.NET \ Framework \ <версия> в каталоге Windows .Его расположение может отличаться в зависимости от точной конфигурации конкретного компьютера. Если на вашем компьютере установлено несколько версий .NET Framework, вы найдете несколько версий этого файла. Дополнительные сведения о таких установках см. В разделе Как определить, какие версии .NET Framework установлены.

Подсказка

При сборке проекта с помощью IDE Visual Studio можно отобразить команду csc и связанные с ней параметры компилятора в окне Вывод .Чтобы отобразить эту информацию, следуйте инструкциям в разделе Как просмотреть, сохранить и настроить файлы журнала сборки, чтобы изменить уровень детализации данных журнала на Обычный или Подробный . После перестроения проекта найдите в окне Output csc , чтобы найти вызов компилятора C #.

В этой теме

Правила синтаксиса командной строки для компилятора C #

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

  • Аргументы разделяются пробелом, который является либо пробелом, либо табуляцией.) не распознается как escape-символ или разделитель. Символ обрабатывается синтаксическим анализатором командной строки в операционной системе, прежде чем он будет передан в массив argv в программе.

  • Строка, заключенная в двойные кавычки («строка»), интерпретируется как единственный аргумент, независимо от того, какие пробелы содержатся внутри. Строка в кавычках может быть встроена в аргумент.

  • Двойная кавычка, перед которой стоит обратная косая черта (\ "), интерпретируется как буквальный символ двойной кавычки (").

  • Обратные косые черты интерпретируются буквально, если они непосредственно не предшествуют двойным кавычкам.

  • Если за четным числом обратных косых черт следует двойная кавычка, в массив argv помещается одна обратная косая черта для каждой пары обратных косых черт, а двойные кавычки интерпретируются как разделитель строк.

  • Если за нечетным числом обратных косых черт следует двойная кавычка, одна обратная косая черта помещается в массив argv для каждой пары обратных косых черт, а двойные кавычки «экранируются» оставшейся обратной косой чертой.Это приводит к добавлению буквальных двойных кавычек (") в argv .

Примеры командных строк для компилятора C #

  • Компилирует File.cs создает File.exe :

      csc File.cs  
  • Компилирует File.cs создает File.dll :

      csc -target: библиотека File.cs  
  • Компилирует File.cs и создает My.exe :

      csc -out: My.exe File.cs  
  • Компилирует все файлы C # в текущем каталоге с включенной оптимизацией и определяет символ DEBUG. На выходе получается File2.exe :

    .
      csc -define: DEBUG -optimize -out: File2.exe * .cs  
  • Компилирует все файлы C # в текущем каталоге, создавая отладочную версию File2.dll . Без логотипа и предупреждений не отображается:

      csc -target: library -out: File2.dll -warn: 0 -nologo -debug * .cs  
  • Компилирует все файлы C # в текущем каталоге в Something.xyz (DLL):

      csc -target: library -out: Something.xyz * .cs  

Различия между компилятором C # и выводом компилятора C ++

Нет файлов объектов ( .obj ), созданных в результате вызова компилятора C #; выходные файлы создаются напрямую. В результате компилятор C # не нуждается в компоновщике.

См. Также

.

Что такое компилятор командной строки?

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

Смотрите также