пятница, 1 марта 2013 г.

Linux (+) C/C++ (+) простой скрипт компиляции

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

Хотя, для нужд простого консольного проекта - за глаза =)

Нам необходим компилятор С++, который устанавливается в той же Linux Ubuntu командой:

sudo apt-get install g++

Затем, я создаю папку ~/dev. Внутри нее структура такова:

  • ~/dev/src для хранения файлов исходного кода (*.cpp) и заголовочных файлов (*.h)
  • ~/dev/obj для хранения скомпилированных, но не связанных объектных файлов (*.o), они получаются из одноименных *.cpp
  • ~/dev/build здесь появится готовый собранных бинарный файл нашей программы.
Делается это командой:

mkdir ~/dev && mkdir ~/dev/src && mkdir ~/dev/obj && mkdir ~/dev/build

Теперь мы напишем bash-скрипт, который будет делать такие шаги:


  1. Компилировать исходные файлы (*.cpp) из ~/dev/src в объектные файлы (*.o) в ~/dev/obj

  2. Собирать объектные файлы (*.o) из ~/dev/obj в готовый исполняемый файл в ~/dev/build

  3. Очистить папку объектных файлов ~/dev/obj



Создаем файл скрипта командой:

cat > ~/dev/compile

Вводим следующий текст:

#!/bin/bash
# Этап 1 Компиляция
cd ~/dev/src/ &&
g++ -c *.cpp &&

# Этап 2 Связывание
mv *.o ~/dev/obj/ &&
cd ~/dev/obj/ &&
g++ *.o -o ~/dev/build/result &&

# Этап 3 Очистка
rm -f ~/dev/obj/* &&
echo 'Compilation succesful!'

Файл скрипта необходимо сделать исполняемым командой:

chmod a+x ~/dev/compile

Теперь можно вызывать скрипт ./compile (находясь в папке ~/dev/).
При успешном выполнении всех команд (они связаны оператором "&&", т.е. последующий выполняется только при удачном завершении предыдущего) отображается текст "Compilation succesful!". Можно переходить в папку ~/dev/build и запускать готовый исполняемый файл result.

В целом алгоритм следующий:


  1. Кладем файлы исходных кодов в ~/dev/src/

  2. Запускаем компиляцию скриптом ~/dev/compile

  3. Запускаем на выполнение готовую программу ~/dev/build/result

Комментариев нет:

Отправить комментарий