Как собрать проект C++ с github из исходников и подключить его к Visual Studio
Благодаря менеджеру пакетов winget, уже входящему в актуальные сборки масдайки, теперь в Windows 10 можно инсталлировать приложения одной простой консольной командой
(см. также доку от Микрософта).
Но мы рассмотрим сейчас ситуацию, когда у нас есть только ссылка на исходники проекта, скажем, на Гитхабе
(возьмём для примера библиотеку для простых чисел primesieve) и нужно каким-то образом скомпилировать внешний проект в своей Studio, чтобы воспользоваться его возможностями в своём приложении.
В противном случае, конечно же, нестандартный include
вроде этого, который вы нашли в коде-образце
#include <primesieve.hpp>
работать не будет ни за что.
Первым делом скачаем все исходники внешнего проекта «как есть» в архиве .zip, для этого у нас на гитхабе есть кнопка «Download ZIP»:
Как загрузить проект с github в архиве .zip
Развернём проект, не создавая новой папки, если у вашего архиватора нет
такого же пункта меню, просто сотрите предлагаемое архиватором имя новой папки, потому что папка уже есть в архиве:
Извлечь внешний проект из архива, не создавая новой папки
Если покопаться в файле readme.md
проекта, как правило, можно найти инструкцию по установке (Build instructions) и даже «Detailed build instructions», где говорится, в числе прочего, и о компиляции проекта под Microsoft Visual C++:
Команды cmake для компиляции проекта со страницы документации
Откроем свой «некомпилируемый» без нужной библиотеки проект в Studio (я использую актуальную сборку версии 2019) и обратимся к команде меню Вид — Терминал.
Выберем инструмент «Командная строка разработчика» (по умолчанию в новых сборках теперь выбран PowerShell, впрочем, если в документации приведены команды PowerShell, то применяйте их).
У Микрософта инструмент описан вот здесь.
Командная строка разработчика в Studio
В командной строке пишем команды из документации, но сначала, конечно, нужно перейти в ту папку, где у вас развёрнут скачанный проект. Мне понадобилось ввести в консоли следующее, завершая каждую команду нажатием Enter:
d: cd tempprimesieve-master
— теперь я в нужной папке, так как развернул свой архив в папку d:temp
Далее как написано:
cmake -G "Visual Studio 16 2019" . cmake --build . --config Release
Можно просто копировать команды со страницы документации, в окне консоли вверху есть стандартная кнопочка «Вставить».
А вот точка в записи команд имеет значение, это ссылка на текущую папку!
Ну и, конечно, для другой версии Studio будет другое указание компилятора, узнать своё можно командой
cmake -G
Нужный генератор будет помечен в списке «звёздочкой».
Если что-то пошло не так, ошибаетесь в консольных командах и получаете
сообщения об ошибках кэша — сотрите файл CMakeCache.txt из папки
скопированного проекта и попробуйте снова.
Теперь проект можно открывать в Studio и работать с ним, все нужные файлы есть в папке d:tempprimesieve-master
Но мы хотим подключить всё, что нужно, к своему имеющемуся проекту, а не пытаться модифицировать чужую библиотеку.
Примерный путь описан вот здесь, мне же пришлось сделать конкретно следующее:
- Меню Проект — Свойства, слева выбираем Свойства конфигурации, C/C++, Общие,
раскрываем поле «Дополнительные каталоги включаемых файлов», говорим «Изменить» и показываем на папку
D:Tempprimesieve-masterinclude
. В вашем проекте, как правило, тоже будет вложенная папкаinclude
. - В том же окне выбираем Компоновщик — Общие — Дополнительные каталоги библиотек, «Изменить» и добавляем путь
D:Tempprimesieve-masterRelease
. Этого может оказаться мало,
у вашего проекта и внешнего должны быть выбраны одинаковые конфигурации решения.
Так как я выбрал Release для внешнего проекта, то и в своём проекте в списке «Конфигурации решения» (на стандартной панели инструментов) указал Release и платформу x64.
Можно было работать и с Debug, но тогда и внешний проект компилируем как Debug и потом выбираем путьD:Tempprimesieve-masterDebug
. - В списке C/C++ — Создание кода — Библиотека времени выполнения выбрал
Многопоточный DLL (/MD), иначе будет «LNK2038: обнаружено несоответствие для ‘RuntimeLibrary’: значение ‘MT_StaticRelease’ не соответствует значению ‘MD_DynamicRelease’ в file.obj». - Сам файл библиотеки, как правило имеющий тип
.lib
, тоже нужно прописать.
Всё в том же окне свойства проекта выбираем список Компоновщик — Ввод,
раскрываем список «Дополнительные зависимости», жмём «Изменить» и указываем
в поле ввода имя файла библиотекиprimesieve.lib
- На всякий случай, проверяем, что у нас в списке
Компоновщик — Система — Подсистема, у меня там простоКонсоль (/SUBSYSTEM:CONSOLE)
, для других
типов проектов может понадобиться изменение и этой настройки.
После этого у меня всё заработало.
Ну а конкретная задача, на которой я проверял библиотеку —
печать самых длинных цепочек последовательных простых чисел,
в которых разница между соседними значениями строго возрастает или строго убывает,
предел счёта равен 1000000, вот сама программа:
#include <cstdint> #include <iostream> #include <vector> #include <primesieve.hpp> void print_diffs(const std::vector<uint64_t>& vec) { for (size_t i = 0, n = vec.size(); i != n; ++i) { if (i != 0) std::cout << " (" << vec[i] - vec[i - 1] << ") "; std::cout << vec[i]; } std::cout << 'n'; } int main() { std::vector <uint64_t> asc, desc; std::vector <std::vector<uint64_t>> max_asc, max_desc; size_t max_asc_len = 0, max_desc_len = 0; uint64_t prime; const uint64_t limit = 1000000; for (primesieve::iterator pi; (prime = pi.next_prime()) < limit; ) { size_t alen = asc.size(); if (alen > 1 && prime - asc[alen - 1] <= asc[alen - 1] - asc[alen - 2]) asc.erase(asc.begin(), asc.end() - 1); asc.push_back(prime); if (asc.size() >= max_asc_len) { if (asc.size() > max_asc_len) { max_asc_len = asc.size(); max_asc.clear(); } max_asc.push_back(asc); } size_t dlen = desc.size(); if (dlen > 1 && prime - desc[dlen - 1] >= desc[dlen - 1] - desc[dlen - 2]) desc.erase(desc.begin(), desc.end() - 1); desc.push_back(prime); if (desc.size() >= max_desc_len) { if (desc.size() > max_desc_len) { max_desc_len = desc.size(); max_desc.clear(); } max_desc.push_back(desc); } } std::cout << "Longest run(s) of ascending prime gaps up to " << limit << ":n"; for (const auto& v : max_asc) print_diffs(v); std::cout << "nLongest run(s) of descending prime gaps up to " << limit << ":n"; for (const auto& v : max_desc) print_diffs(v); return 0; }
Ответы вышли такие:
Longest run(s) of ascending prime gaps up to 1000000: 128981 (2) 128983 (4) 128987 (6) 128993 (8) 129001 (10) 129011 (12) 129023 (14) 129037 402581 (2) 402583 (4) 402587 (6) 402593 (8) 402601 (12) 402613 (18) 402631 (60) 402691 665111 (2) 665113 (4) 665117 (6) 665123 (8) 665131 (10) 665141 (12) 665153 (24) 665177 Longest run(s) of descending prime gaps up to 1000000: 322171 (22) 322193 (20) 322213 (16) 322229 (8) 322237 (6) 322243 (4) 322247 (2) 322249 752207 (44) 752251 (12) 752263 (10) 752273 (8) 752281 (6) 752287 (4) 752291 (2) 752293
За счёт хорошо оптимизированного кода библиотеки считается всё мгновенно.
Это задача из списка задач на простые числа
21.10.2021, 13:15 [5782 просмотра]
К этой статье пока нет комментариев, Ваш будет первым
БлогNot. Как собрать проект C++ с github из исходников и подключить его к Visual Studio
Как собрать проект C++ с github из исходников и подключить его к Visual Studio
Благодаря менеджеру пакетов winget, уже входящему в актуальные сборки масдайки, теперь в Windows 10 можно инсталлировать приложения одной простой консольной командой (см. также доку от Микрософта).
Но мы рассмотрим сейчас ситуацию, когда у нас есть только ссылка на исходники проекта, скажем, на Гитхабе (возьмём для примера библиотеку для простых чисел primesieve) и нужно каким-то образом скомпилировать внешний проект в своей Studio, чтобы воспользоваться его возможностями в своём приложении.
В противном случае, конечно же, нестандартный include вроде этого, который вы нашли в коде-образце
работать не будет ни за что.
Первым делом скачаем все исходники внешнего проекта «как есть» в архиве .zip, для этого у нас на гитхабе есть кнопка «Download ZIP»:
Как загрузить проект с github в архиве .zip
Развернём проект, не создавая новой папки, если у вашего архиватора нет такого же пункта меню, просто сотрите предлагаемое архиватором имя новой папки, потому что папка уже есть в архиве:
Извлечь внешний проект из архива, не создавая новой папки
Если покопаться в файле readme.md проекта, как правило, можно найти инструкцию по установке (Build instructions) и даже «Detailed build instructions», где говорится, в числе прочего, и о компиляции проекта под Microsoft Visual C++:
Команды cmake для компиляции проекта со страницы документации
Откроем свой «некомпилируемый» без нужной библиотеки проект в Studio (я использую актуальную сборку версии 2019) и обратимся к команде меню Вид — Терминал. Выберем инструмент «Командная строка разработчика» (по умолчанию в новых сборках теперь выбран PowerShell, впрочем, если в документации приведены команды PowerShell, то применяйте их).
У Микрософта инструмент описан вот здесь.
Командная строка разработчика в Studio
В командной строке пишем команды из документации, но сначала, конечно, нужно перейти в ту папку, где у вас развёрнут скачанный проект. Мне понадобилось ввести в консоли следующее, завершая каждую команду нажатием Enter:
— теперь я в нужной папке, так как развернул свой архив в папку d:temp
Далее как написано:
Можно просто копировать команды со страницы документации, в окне консоли вверху есть стандартная кнопочка «Вставить». А вот точка в записи команд имеет значение, это ссылка на текущую папку!
Ну и, конечно, для другой версии Studio будет другое указание компилятора, узнать своё можно командой
Нужный генератор будет помечен в списке «звёздочкой».
Теперь проект можно открывать в Studio и работать с ним, все нужные файлы есть в папке d:tempprimesieve-master
Но мы хотим подключить всё, что нужно, к своему имеющемуся проекту, а не пытаться модифицировать чужую библиотеку.
- Меню Проект — Свойства, слева выбираем Свойства конфигурации, C/C++, Общие, раскрываем поле «Дополнительные каталоги включаемых файлов», говорим «Изменить» и показываем на папку D:Tempprimesieve-masterinclude . В вашем проекте, как правило, тоже будет вложенная папка include .
- В том же окне выбираем Компоновщик — Общие — Дополнительные каталоги библиотек, «Изменить» и добавляем путь D:Tempprimesieve-masterRelease . Этого может оказаться мало, у вашего проекта и внешнего должны быть выбраны одинаковые конфигурации решения. Так как я выбрал Release для внешнего проекта, то и в своём проекте в списке «Конфигурации решения» (на стандартной панели инструментов) указал Release и платформу x64. Можно было работать и с Debug, но тогда и внешний проект компилируем как Debug и потом выбираем путь D:Tempprimesieve-masterDebug .
- В списке C/C++ — Создание кода — Библиотека времени выполнения выбрал Многопоточный DLL (/MD), иначе будет «LNK2038: обнаружено несоответствие для ‘RuntimeLibrary’: значение ‘MT_StaticRelease’ не соответствует значению ‘MD_DynamicRelease’ в file.obj».
- Сам файл библиотеки, как правило имеющий тип .lib , тоже нужно прописать. Всё в том же окне свойства проекта выбираем список Компоновщик — Ввод, раскрываем список «Дополнительные зависимости», жмём «Изменить» и указываем в поле ввода имя файла библиотеки primesieve.lib
- На всякий случай, проверяем, что у нас в списке Компоновщик — Система — Подсистема, у меня там просто Консоль (/SUBSYSTEM:CONSOLE) , для других типов проектов может понадобиться изменение и этой настройки.
После этого у меня всё заработало.
Ну а конкретная задача, на которой я проверял библиотеку — печать самых длинных цепочек последовательных простых чисел, в которых разница между соседними значениями строго возрастает или строго убывает, предел счёта равен 1000000, вот сама программа:
Ответы вышли такие:
За счёт хорошо оптимизированного кода библиотеки считается всё мгновенно.
Начало работы: git, gcc и make
В прошлой статье вы подняли окружение для разработки и компиляции gcc под Windows (или установили виртуальную машину с Ubuntu/Debian), а так же зарегистрировались на GitHub. Сейчас мы напишем простейшую программу на C и научимся простейшему использованию git и make.
Для начала вы должны выбрать текстовый редактор, в котором будете писать код. Под Linux-ом это может быть консольный редактор nano или vim (оба предустановлены в Debian и Ubuntu), графический gedit или sublime_text (предустановлен в Debian).
В окружении Windows для того, чтобы удобно использовать текстовый редактор из консоли bash нужно немного исправить его конфигурацию. Для этого открываем вашим любимым текстовым редактором файл C:MinGWmsys1.0etcprofile и в самый конец файла на новой строчке добавляем следующее:
Например, для Notepad++ со стандартным путем установки это выглядит так:
Команда alias задает псевдоним какой-то команды в bash. В данном случае, вы дали знать оболочке, что хотите, чтобы при обращении к команде “editor” у вас вызывалась программа, расположеная по пути “C:Program Files (x86)Notepad++notepad++.exe”.
Скорее всего, это было последнее отличие для Windows, и в следующих статьях материал будет актуален для обеих систем.
Написание первого кода
Откроем консоль bash и создадим новую директорию с именем test1 в нашей домашней директории. Для этого введем команду:
Теперь войдем в нее. Аналогично,
Заголовок окна и строка приглашения (та, что на строку выше “$” в Windows, в той же строке перед символов “$” в Linux) должна измениться и отображать текущий путь. Нетрудно заметить, что он начинается с символа“
”. В Unix-системах этот символ означает домашнюю директорию.
Теперь же приступим непосредственно к редактированию кода.
В консоли bash выполним следующую команду (если вы используете Sublime Text 3 под Linux, то вместо editor используйте sublime_text):
Тем самым мы откроем текстовый редактор для файла main.c в текущей директории. Эта команда удобна тем, что сработает и в Windows, и в Linux с любым текстовым редактором (кроме Sublime Text, если это не было настроено вручную). Если такого файла не существовало ранее, то этот файл будет создан.
Введем в него следующий код:
И сохраним файл. Теперь этот исходный код необходимо скомпилировать. Введем команду:
В результате у нас получится файл main (или main.exe под Windows). Но давайте сначала разберем саму команду.
И так, команда состоит из 2 частей: собственно команды и ее параметров. В качестве команды здесь у нас выступает имя компилятора — gcc, а вот параметры рассмотрим подробнее.
Параметр -o задает имя выходного файла скомпилированой программы. Если его не указывать, то выходной файл компилятора будет называться a.out (таким образом, этот параметр необязательный).
Далее следуют необязательные параметры -Wall и -Werror. Легко заметить, что оба начинаются с “-W”, что означает, что они относятся к обработке предупреждений (Warning-и). “-Wall” включает вывод всех сообщений warningов, а “-Werror” заставляет компилятор обрабатывать их как ошибки, то есть прерывать компиляцию, когда такой warning встречается.
Далее следует последний и обязательный параметр — имя компилируемого файла. Тут все просто. Этот параметр нельзя опускать (иначе компилятор не узнает, что надо компилировать).
Можем проверить работу нашей программы, введя в консоли:
Если на экране вывелась строка “Hello, world!”, то вы все сделали правильно.
Начало работы с Git
Git — это такая система контроля версий. Это значит, что она используется для хранения всей истории изменения проекта, быстрого перехода между версиями проекта, а так же для удобства командной разработки. Основной объект оперирования (то, с чем вы будете работать) — это репозиторий. Для человека он выглядит как обычная директория с файлами, в которой также есть и скрытая папка .git, в которой хранится история изменений и другая служебная информация.
Начнем работу. Для того, чтобы создать пустой репозиторий в текущей папке, введем команду:
(для создания новой пустой папки и репозитория в нем нужно ввести имя папки после “init”). В данный момент все изменения (а на данный момент для git-а файл main.c, который мы создали ранее, это “изменение”) еще не добавлены в репозиторий (т.н. “unstaged changes”). Мы можем просмотреть текущее состояние репозитория (т.е. все неизмененные, измененные и недобавленные файлы) с помощью команды
Видим, что файлы, которые создали мы и компилятор находятся в списке “Untracked files”. Это означает, что они еще не добавлены в репозиторий или не добавлены в текущий коммит.
Коммитом называется операция фиксации всех изменений, сделанных в репозитории и добавленых к коммиту. Также к коммиту обычно прилагается комментарий, описывающий что именно изменилось во время данной фиксации. На практике очень важно писать осмысленные и правильные комментарии к коммиту.
Давайте добавим наш файл к коммиту и зафиксируем изменения.
После этого должен создасться первый коммит, а в выводе команды “git status” файл main.c должен исчезнуть из списка “Untracked files”. С помощью команды “git log” можно просмотреть список коммитов.
Обратите внимание, мы не просто так добавили в репозиторий только файл с исходным кодом. За редким исключением в репозиторий добавляются только plaintext-файлы, т.е. файлы, которые содержат человекочитаемый текст. Binary-файлы в репозиторий добавлять не нужно (в git существует даже специальный файл, в который можно записать список или маску всех бинарных файлов проекта, чтобы случайно не добавить их).
Давайте теперь внесем изменения в наш код.
Для начала об изменениях в коде. Выше, при компиляции, вы уже познакомились с понятием параметра командной строки. Функция main принимает 2 параметра — argc и argv. Так вот, argc — это количество параметров, а argv — это массив, содержащий в элементах каждый из параметров. Теперь наша программа проверяет, больше ли 1 количество параметров (потому что сама команда на всех системах тоже считается за параметр и хранится в argv[0] — это важно!) и если это так, то выводит сообщение “Hello, <тут первый параметр>!”, в противном случае выводит “Hello, <имя программы, оно же нулевой параметр>!”.
Скомпилируем программу заново (используя ту же команду, что и в прошлый раз) и проверим результат ее выполнения, введя:
Вместо самой команды вывелся полный путь к вызываемому файлу, потому что оболочка командной строки автоматически раскрывает команду в полный путь к файлу.
Теперь нужно добавить измененный файл к текущему коммиту. Делается это той же командой “git add” (как и добавление нового файла).
И так, теперь в списке коммитов отображается 2 коммита. Для самого git коммиты — это специальные файлы в формате patch, которые позволяют на уровне строк (т.е. даже если в строке будет отличаться всего один символ, будет полностью удалена старая строка и добавлена измененная) находить разницу между файлами. Чтобы посмотреть, как выглядит коммит, использутся команда “git show”.
Теперь рассмотрим, как отправлять код на удаленный репозиторий (например GitHub). Переходим по этой ссылке и создаем репозиторий с названием “test1″. Настройки должны выглядеть как на скриншоте ниже.
Создаем репозиторий. После этого GitHub выдает нам страницу с некоторым набором действий, которые именуются “Quick setup”. На странице будет переключатель “HTTPS | SSH”, по умолчанию установленый в HTTPS. Если вы создавали ssh-ключ с помощью ssh-keygen, то можете выбрать SSH (как я писал ранее, тогда вам не придется вводить пароль при отправке изменений). В противном случае ничего не трогайте.
Из всех команд, которые предлагает нам GitHub, нас интересует только та, которая начинается с “git remote add”. Копируем ее и выполняем в консоли. Эта команда добавляет удаленный адрес репозитория, в который git сможет отправлять все сделаные вами изменения.
(это пример команды). Здесь “origin” — это имя источника (удаленного репозитория). “origin” — это имя для основного источника (их может быть несколько). После этого введем:
Как видим, в этой команде указывается имя источника, а так же название ветки “master”. Дело в том, что у репозитория git может быть несколько ответвлений, которые после могут сливаться в главное. Но это мы пока рассматривать не будем.
Если вы выбрали HTTPS-режим, то у вас запросится логин и пароль. После этого изменения отправятся на сервер и мы сможем их увидеть на странице репозитория GitHub.
Написание сценариев make
GNU make — это система сборки проектов. Сейчас наш проект состоит из одного файла и собирали мы его одной командой, однако на практике файлов могут быть сотни и тысячи, и для того, чтобы не компилировать каждый файл вручную и нужна система сборки.
make имеет очень простой синтаксис. У make есть так называемые “цели”, т.е. задачи, которые система сборки будет выполнять. Цели задаются таким образом: “<имя_цели>:”. Имя цели — строчные английские символы и цифры. Команды внутри цели — это обычные консольные команды bash. Они должны быть отделены от начала строки одним символом табуляции (нажатие кнопки Tab, таким образом make понимаем, что это именно команда, а не цель). Сам файл с целями и командами make должен называться “Makefile” (обязательно с большой буквы). Цель по умолчанию называется “all”.
Рассмотрим пример простейшего Makefile:
(если будете копировать здесь и далее, то отступы сделаны с помощью пробелов, но надо их сделать с помощью клавиши Tab).
Здесь задана только одна цель — “all” и одна команда, которой мы и раньше компилировали наш исходник. Добавим еще две цели, одну для очистки директории от мусора (за мусор примем скомпилированый файл) и тестирования нашего проекта.
Мы добавили две цели: в цели test — команды для тестирования, которые мы использовали ранее, а в цели clean — команда для удаления скомпилированного файла “main” (“main.exe” для Windows).
Протестируем полученный файл:
После этого у вас должен скомпилироваться код main.c, вывестись 2 результата запуска (с параметром и без), а потом удалиться исполняемый файл (“make clean” завершится с ошибкой, т.к. одного из файлов в зависимости от ОС у вас не будет)
Как видно, в файле часто используется название “main”. Для того, чтобы вынести его, в make есть поддержка переменных. Переменные задаются вне целей: “<имя переменной>:=<значение>”, каждая на новой строке. В командах значение переменной можно использовать с помощью конструкции “$(<имя переменной>)”. Добавим переменную target в наш Makefile:
Протестируйте этот файл еще раз.
Самостоятельное задание: добавьте Makefile в репозиторий и отправьте изменения на GitHub.
Сборка небольшого проекта из GitHub
Доброго времени суток. Собираю проект https://github.com/leonahi/stream_cipher_a5_1 в Qt(проект без Qt, C++, MinGw 32bit)
Создаю проект c qMake, main.cpp не заменяю
Добавляю все файлы из папки
Компилирую
Ккак мне нужно выполнить чтение из файла если с проектом прилагается test_file_binary.txt?
В общем решил попробовать «собрать» ваш пример. Работаю тоже в «Qt» :3.
Разобью на действия :
1. Скачал проект
2. Разархивировал проект
3. В той же директории создал проект на С++ (вторая картинка)
4. После чего добавил в проект все файлы кроме Makefile файла. Я так и не понял в чём именно был собран скачанный проект и не стал заворачиваться с ним
5. Также заменил файл main.cpp на разархивированный из проекта.Можно также просто скопировать вставить с заменой всего содержимого.
6. Воаля всё собирается :3
7. Также желательно в ту папку в которой лежит собранный проект (в винде .exe, в линуксе ?? ) положить тестовые текстовые файлы (.txt)
8. В винде : После чего можно зайти в командную строку (cmd) и зайти в папку в которой собран проект (через cmd разумеется) и ввести
команду exper.exe test_file_binary.txt
В линуксе всё печальней 🙁
Выполняем все действия до 7 пункта. После чего сталкиваемся что исполнительного файла как такового полностью нету. В винде .exe файл при «запуске» сразу говорит каких файлов тебе не хватает после чего, ты просто копируешь их из папки где лежит компилятор в директорию собранного проекта. В линуксе надо устанавливать linuxdeployqt ( sudo apt-get install libqt5webkit5-dev ) после чего выполнять команду подтягивающую библиотеки, но увы у меня не вышло (третья картинка), притом что у меня linuxdeployqt установился.
Я пошёл другим путем, просто «загрубил» программу и закоментировал все вызовы argv[1] заменив их созданным буфером с названием файла(который лежит в директории программы ) char ess[256] = «test_file_binary.txt»;
Ну и вот картинка с результатом.
Создаю проект. Ошибка 🙁
#статьи
- 6 фев 2023
-
0
Разбираемся, как использовать встроенные функции редакторов кода и IDE для работы с GitHub и забыть про командную строку.
Иллюстрация: Катя Павловская для Skillbox Media
Когда веб-версия и GUI-клиент уже надоели, появляется мысль работать с репозиториями напрямую, минуя промежуточные звенья в виде дополнительного софта. Так получается быстрее и эффективнее, ведь код загружается прямо из вашего любимого редактора или IDE.
Как это сделать — читайте во второй части нашего руководства по GitHub (а вот первая).
Список редакторов кода и IDE, с которыми дружит GitHub, довольно внушительный, поэтому многие даже составляют топы таких интеграций. Здесь нужно кое-что уточнить: GitHub можно связать не только с IDE — есть варианты для Telegram, Slack, Microsoft Teams и не только.
В этом руководстве мы коснёмся только самого необходимого — десктопного клиента и интеграции со средами разработки.
В настройках нативного GUI-клиента GitHub есть опция под названием Integrations, но настоящей интеграцией её можно назвать очень условно: речь скорее об открытии исходников в вашем репозитории через установленный на ПК редактор или IDE.
Скриншот: Skillbox Media
Данной опцией мы просто выбираем дефолтный редактор для открытия файла. Чтобы её настроить, зайдите в File -> Options -> Integrations.
Поддерживаются следующие редакторы:
- Visual Studio Code
- Visual Studio Codium
- Sublime Text
- ColdFusion Builder
- Typora
- SlickEdit
- JetBrains IntelliJ Idea
- JetBrains WebStorm
- JetBrains PhpStorm
- JetBrains Rider
- JetBrains CLion
- JetBrains PyCharm
- JetBrains RubyMine
- JetBrains GoLand
- Android Studio
- Brackets
- Notepad++
- RStudio
- Aptana Studio
А теперь — к более полезным интеграциям.
В целом начать работать с GitHub можно сразу же: достаточно перейти в боковой панели на вкладку «Проводник» или «Система управления версиями», нажать на кнопку «Клонировать репозиторий», вставить правильную ссылку на него и выбрать место для сохранения папки на вашем ПК.
Скриншот: Skillbox Media
Репозиторий скачается в эту папку и откроется на вкладке «Проводник».
Скриншот: Skillbox Media
Чтобы внести в исходный код какие-либо изменения, открываем файл, делаем всё необходимое и сохраняем. Дальше на вкладке «Система управления версиями» появится уведомление о новых изменениях, которые нужно запушить — то есть синхронизировать с удалённым репозиторием.
Скриншот: Skillbox Media
Выбираем вариант «Фиксация», вводим комментарий к изменениям и кликаем на «Синхронизировать изменения».
Скриншот: Skillbox Media
Теперь, если мы обновим страницу нашего репозитория в веб-версии, то увидим новые правки.
Всё это отлично работает, но что, если этих функций нам недостаточно? В этом случае для более полной интеграции VS Code с GitHub можно скачать в маркетплейсе Visual Studio официальное расширение GitHub Repositories. Оно позволяет работать с репозиториями напрямую, без клонирования, из функций: поиск, обзор, редактирование и коммиты (в общем, мастхэв).
Скриншот: Skillbox Media
Скриншот: Skillbox Media
Его можно установить как по ссылке, так и из самого редактора кода — во втором случае нужно перейти на вкладку «Расширения» в левой панели, ввести в строку поиска «GitHub», выбрать в списке нужный вариант и нажать «Установить».
Когда начнёте работу с расширением, оно попросит выполнить простую авторизацию.
Скриншот: Skillbox Media
Скриншот: Skillbox Media
Скриншот: Skillbox Media
После установки расширения в проводнике появляется опция «Открыть удалённый репозиторий».
Скриншот: Skillbox Media
Теперь выберите её и далее введите в строке поиска ссылку на нужный репозиторий (или выберите его из списка). Он откроется в проводнике без клонирования. Коммиты в него можно вносить так же, как мы показывали выше.
Если вам не хватило этих функций, есть ещё одно официальное расширение под названием GitHub Pull Requests and Issues — только для работы с пул-реквестами и блоком Issues, соответственно.
Скриншот: Skillbox Media
Скриншот: Skillbox Media
Процесс установки расширения и авторизации аналогичный.
Скриншот: Skillbox Media
Скриншот: Skillbox Media
Скриншот: Skillbox Media
Через несколько секунд на боковой панели появится гитхабовский значок с котом, который ведёт в меню со списком pull requests и issues.
В IDE от JetBrains поддержка GitHub есть по умолчанию, остаётся лишь подключить свой аккаунт, причём во всех «родственниках» IDEA эти функции работают почти одинаково. Мы рассмотрим их на примере PyCharm — вот так вот мы хотим
Чтобы попасть в нужный раздел настроек, перейдите по пути File -> Settings -> Version Control -> GitHub.
Скриншот: Skillbox Media
Здесь надо выбрать единственный вариант Add account, и IDE сразу перенаправит вас на страницу подтверждения авторизации.
Скриншот: Skillbox Media
Скриншот: Skillbox Media
Когда закончите с авторизацией, можно будет просматривать GitHub-репозитории прямо из PyCharm. Вообще, способ будет зависеть от того, вошли вы в какой-нибудь проект или ещё нет, а также от того, связан ли уже проект с системой контроля версий.
Скриншот: Skillbox Media
Если находитесь в стартовом меню выбора проекта, нужно выбрать в правом верхнем углу вариант Get from VCS (сокращение от version control system). Для выбора из списка своих репозиториев нужно выбрать GitHub, а для клонирования репозитория по ссылке — вариант Repository URL (авторизоваться на GitHub можно и на этом этапе).
Если какой-то проект уже открыт, нужно перейти в меню VSC -> Get from Version Control (для локального проекта) или Git -> Clone (для удалённых репозиториев и проектов, у которых выбрана система контроля версий).
Скриншот: Skillbox Media
Когда выбран нужный метод работы, должен появиться пункт меню Git, а не VSC: если в открытом проекте отображается VSC, нужно связать его с системой контроля версий, выбрав VSC -> Enable Version Control Integration -> Git -> OK.
Когда проект связан с Git, из соответствующего меню можно полноценно работать с GitHub — делать коммиты, пуши, переключаться между ветками и так далее. Также внизу справа появится значок ветки, через него тоже можно работать с репозиторием.
Под капотом современной Android Studio уже знакомая нам IDE от JetBrains, так что интерфейс почти идентичен PyCharm.
Скриншот: Skillbox Media
Скриншот: Skillbox Media
Здесь тоже можно настроить интеграцию и клонировать проект уже на стартовом экране: для этого достаточно выбрать Get from VCS.
Скриншот: Skillbox Media
Для существующих проектов список шагов также ничем не отличается: выбираем систему контроля версий, логинимся и улыбаемся пушим, клонируем, коммитим.
Чтобы работать с GitHub-репозиториями внутри некогда суперпопулярной, а ныне утратившей свои позиции IDE Eclipse, нужен официальный Git-плагин EGit, который ставится по умолчанию — при установке самого приложения. После настройки из него будет доступен и GitHub.
Скриншот: Skillbox Media
Проверить доступность плагина можно в разделе Help -> Eclipse Marketplace (в строке поиска нужно вбить «EGit»), а документацию вы найдёте здесь.
Скриншот: Skillbox Media
Нужную менюшку потребуется включить: она спрятана по пути Window -> Perspective -> Open Perspective -> Other -> Git. Выбираем вариант Git и жмём Open, после чего в интерфейсе появится необходимая панель. Второй способ доступа: Window -> Show View -> Git Repositories.
Скриншот: Skillbox Media
Скриншот: Skillbox Media
Чтобы клонировать публичный GitHub-репозиторий, выберите на новой панели вариант Clone a Git repository и вставьте полную ссылку. Выбираем локальное расположение — и готово (указывать логин и пароль необязательно).
Скриншот: Skillbox Media
Скриншот: Skillbox Media
С приватным репозиторием чуть сложнее: для его клонирования понадобится в качестве пароля указать токен, который нужно создать в настройках аккаунта GitHub: Settings -> Developer settings -> Personal access tokens -> Tokens (classic) -> Generate new token -> проставляете разрешения для токена -> Generate token.
Скриншот: Skillbox Media
Чтобы сделать коммит из локальной версии репозитория, файл-исходник должен лежать в рабочей директории (или быть уже скачан в неё). Перейдите на вкладку Git Staging и убедитесь, что изменённый файл указан в поле Unstaged Changes («Неустановленные изменения»).
Скриншот: Skillbox Media
Дальше его нужно добавить в поле Staged Changes нажатием на плюсик, указать сообщение и нажать Commit and Push.
Конечно, возможность использовать GitHub есть и в нативной эппловской IDE.
Для начала задаём дефолтные имя и email, которые будут использоваться во всех ваших проектах: это делается в Preferences -> Source Control -> вкладка Git (если её нет, нужно выбрать опцию Enable Source Control на вкладке General).
Скриншот: официальная документация Xcode
Чтобы одновременно с созданием нового проекта создать и локальный репозиторий, просто поставьте галочку в пункте Create Git repository on my Mac.
Скриншот: официальная документация Xcode
Как и в предыдущих случаях, если вы не кулхацкер, для работы с удалёнными GitHub-репозиториями понадобится залогиниться: Preferences -> Accounts -> нажмите кнопку добавления (+) -> выберите тип аккаунта -> Continue. В новом диалоге создаёте токен GitHub (Create a Token on GitHub) или вставляете уже существующий.
Скриншот: официальная документация Xcode
Теперь для копирования репозитория с GitHub достаточно выбрать Source Control -> Clone и выбрать нужный репозиторий (или вставить ссылку на него).
Скриншот: официальная документация Xcode
Синхронизация локального и удалённого репозитория делается следующим образом:
- Связываете существующий репозиторий с удалённым, кликнув с зажатым Ctrl на папке Remotes внутри вашего проекта и выбрав Add Existing Remote.
- Указываете название и URL удалённого репозитория.
- Нажимаете Add.
После этого можно подтягивать изменения в удалённом репозитории, выполняя pull- или fetch-запросы соответственно (Source Control -> Pull или Source Control -> Fetch Changes). Для пуша изменений из локального репозитория в удалённый потребуется выбрать Source Control -> Push.
Конечно, это далеко не все доступные варианты интеграции GitHub с IDE — да и внутри уже перечисленных IDE есть куча дополнительных функций для продвинутой работы с самым популярным хостингом проектов. Для других, менее популярных, IDE и редакторов кода метод работы с GitHub будет почти таким же. А если какие-то нюансы будут непонятны, то последуйте совету RTFM — почитайте доку
Учись бесплатно:
вебинары по программированию, маркетингу и дизайну.
Участвовать
Школа дронов для всех
Учим программировать беспилотники и управлять ими.
Узнать больше
На чтение 18 мин. Просмотров 1.3k. Опубликовано 19.01.2021
Я новичок в GitHub. Недавно я скачал с GitHub программу для печати в Sublime Text. Вот ссылка: https://github.com/svenax/SublimePrint Но после того, как я загрузил программу под названием SublimePrint-master.zip, я не знаю, как установить ее в Windows. Не похоже, что после распаковки SublimePrint-master.zip есть установочный или установочный файл. Кто-нибудь подскажет, как установить программу с GitHub? Большое спасибо.
См. этот ответ для как установить плагины Sublime: https://stackoverflow.com/a/15652795/4494
Плагин также содержит файл INSTALL.txt
, который должен быть хорошее начало для чтения, ну, установка : https://github.com/svenax/SublimePrint/blob/master/INSTALL.txt
ответил 28 марта ’18 в 2:04
См. этот ответ, чтобы узнать, как установить плагины Sublime: https://stackoverflow.com/a/15652795/4494
Плагин также содержит файл INSTALL.txt
, который должен стать хорошим началом для чтения, ну, его установка : https://github.com/svenax/SublimePrint/blob/master/INSTALL.txt
GitHub – это не приложение для магазина. Нет “руководства по установке программы с github”. Github – это платформа, на которой разработчики размещают свой код *. Любой код . Это может быть программа для Windows. Это могла быть программа для Android. Это может быть html. Это могла быть библиотека. Это может быть фрагмент кода. Это может быть код на языке, изобретенном разработчиком. Это может быть его список покупок.
В некоторых репозиториях есть файл Readme, в котором рассказывается, как скомпилировать или установить программу. Но это зависит только от разработчиков, разместивших код. Если нет файла readme, попробуйте выяснить, что это за код (например, плагин Sublime), и поищите в Интернете, как установить такой код.
(*) это больше чем это, но для целей вопроса давайте ограничимся этим
ответил 28 марта ’18 в 02:06
GitHub не является приложением для магазина. Нет “руководства по установке программы с github”. Github – это платформа, на которой разработчики размещают свой код *. Любой код . Это может быть программа для Windows. Это могла быть программа для Android. Это может быть html. Это могла быть библиотека. Это может быть фрагмент кода. Это может быть код на языке, изобретенном разработчиком. Это может быть его список покупок.
В некоторых репозиториях есть файл Readme, в котором рассказывается, как скомпилировать или установить программу. Но это зависит только от разработчиков, разместивших код. Если нет файла readme, попробуйте выяснить, что это за код (например, плагин Sublime), и поищите в Интернете, как установить такой код.
(*) это больше чем это, но для целей вопроса давайте ограничимся этим
Содержание
- Как мне установить программу Windows (написанную на C), загруженную с GitHub?
- Инструменты сборки
- Toolchains
- Фреймворки и библиотеки
- Инструменты сборки
- Toolchains
- Фреймворки и библиотеки
Как мне установить программу Windows (написанную на C), загруженную с GitHub?
Я скачал с GitHub очень простую программу для Windows (если это актуально). Я скачал его в виде ZIP-файла, но не могу понять, как его установить. Я думаю, это написано на C. Мне нужен компилятор? (Visual Studio?) Есть ли что-то простое, чего мне не хватает?
Github в основном используется программистами для совместной работы над проектами. Параметр «Загрузить ZIP» загружает копию исходного кода на ваш компьютер. Этот обычно 1 не содержит копии скомпилированных используемых исполняемых/двоичных файлов (т.е. файлов exe)
Releases – это функция Github для доставки программного обеспечения конечным пользователям (которые обычно не заинтересованы в фактическом кодировании). Выпуски сопровождаются примечаниями к выпуску и ссылками для загрузки программного обеспечения или исходного кода. Это первое место, где вы должны проверить двоичные файлы .
В вашем случае страница выпусков предлагает файлы для загрузки и установки.
Однако у многих проектов не будет выпусков (особенно для Windows), и в этом случае вы можете выполнить одно из следующих действий:
-
Искать двоичные файлы в других местах в Интернете. Обычно поисковые системы, такие как DuckDuckGo (или Google, если хотите), легко находят то, что вы хотите. Попробуйте выполнить поиск по запросу
для Windows
илиexe
. -
Скомпилируйте его самостоятельно. Вам необходимо иметь хотя бы некоторые базовые знания языка программирования, чтобы это сделать. . И здесь поисковые системы могут быть очень полезными. Попробуйте выполнить поиск по запросу
compile в Windows
илиMinGW compile
.Здесь я бегу через основы компиляции утилит для Widnows:
-
Загрузите MinGW. Я лично предпочитаю этот пакет, потому что он включает ускорение (которое используют несколько приложений) и классную оболочку. Он также поставляется с
git
, который может быть очень полезен, если вы хотите скомпилировать файлы, размещенные на Github или других репозиториях управления версиями Git, без необходимости отдельно загружать исходный код.. -
Выполните следующие команды в
cmd
илиpowershell
:-
cd c: sources hello
: измените каталог на то место, где находится исходный файл (ы). -
g ++ helloworld.cpp -o helloworld.exe
: здесьhelloworld.cpp
– это имя основного исходного файла, аhelloworld.exe
– имя скомпилированного исполняемого файла. - Если вам нужно скомпилировать несколько файлов, перечислите их перед переключателем
-o
:g ++ helloworld.cpp foo.cpp -o helloworld.exe
- Это инструкции для C ++. Если вы имеете дело с приложениями, написанными на C, расширение файла будет
.c
вместо.cpp
, и вам следует использоватьgcc
вместоg ++
. Остальное более или менее идентично. - Обратите внимание, что вам может потребоваться указать больше аргументов командной строки, чтобы скомпилировать исполняемый файл, который работает правильно. Страница проекта будет обычно есть эти детали.
- Вы также , вероятно, определенно захотите изучить make-файлы. Этот пост о переполнении стека посвящен make-файлам в целом, а в этом рассказывается, как их использовать с MinGW. Если проект поставляется с make-файлом, попробуйте его перед компиляцией исходного кода вручную.
- Теперь вы можете запустить
helloworld.exe
.
-
- Примечание. Большинство проектов поставляются с файлом README. Пожалуйста, сделайте то, что следует из названия, эти файлы содержат важную информацию о компиляции и запуске программного обеспечения, и, прочитав их, вы сможете избежать множества ненужных хлопот.
-
1 Примечание. Иногда среди загруженных файлов может быть папка с именем bin
, которая должна содержать используемые исполняемые/двоичные файлы
Также см. Cygwin и GOW, если вам нужны утилиты командной строки GNU/Linux в Windows. Я делаю последнюю версию некоторых полезных исполняемых файлов, доступных для загрузки здесь.
Дополнительная литература:
http://www.mingw.org /wiki/MinGW_for_First_Time_Users_HOWTO
https://gcc.gnu.org/onlinedocs/index.html#dir
https://stackoverflow.com/questions/22873884/how-do-i-run -configure-with-mingw
Вы посмотрите вокруг и найдите установщик на странице выпуска. Конечно, вы могли бы скомпилировать исходный код, но я не думаю, что вы этого хотите.
ответил 20 апр. ’17 в 12:40
-
Согласовано. Если вам нужно спросить, вы не хотите компилировать из исходников. – thunderblaster 20 апр. ’17 в 16:59
-
Если вам нужно спросить, вам, вероятно, не следует устанавливать программное обеспечение, которое доступно только в исходной форме … – jpaugh, 20 апр. ’17 в 19:15
-
Я склонен согласиться с @jpaugh. Хотя очень возможно, а иногда и необходимо собрать из исходного кода, это не то, что вы можете просто пойти и спросить «как мне создать программу на C» в общем виде. Слишком много различий. Некоторые счастливые программы так же просты, как «скомпилировать эти файлы». Другим нужны make-файлы. Некоторым нужно сначала загрузить зависимости. Процесс настройки для сборки может быть сложным и необязательно несовместимым с программистом. Однако, прежде всего, вы хотите найти в проекте файл, объясняющий, как строить, потому что особенности зависят от проекта. – Кэт 20 апр., В 19:36
-
@jpaugh – я бы сказал, что у вас гораздо больше шансов установить вредоносное ПО, загрузив исполняемый файл – вредоносное ПО редко бывает открытым. – namey 21 апр. ’17 в 0:22
-
Предполагая, что вы действительно можете читать язык. Я обычно компилирую что-то на linux и не могу/не читаю исходники. Даже если бы я мог, я не собираюсь просматривать каждую отдельную строку. – Компьютерщик-подмастерье ♦ 22 апр. ’17 в 0:36
| показать 3 дополнительных комментария
Вы осмотритесь и найдете установщик на странице выпуска. Конечно, вы могли бы скомпилировать исходный код, но я не думаю, что вы этого хотите.
Файлы .c и .h Исходный код C.
Вам нужно будет установить компилятор C, такой как Visual Studio, tcc или что-то подобное, загрузить проект, а затем скомпилировать его для его запуска.
В противном случае у проекта есть страница выпуска (здесь), которая предоставит вам доступ к предварительно скомпилированной версии, чтобы сэкономить ваше время и усилия.
отредактировано 20 апреля ’17 в 21:50
Питер Мортенсен
11. 2k2222 золотых знака6464 серебряных знака8686 бронзовых знаков
ответил 20 апр. ’17 в 15: 412017-04-20 15:41
-
Если бы ему пришлось скомпилировать его, то обычно это было бы объяснил в ридми, о котором вы даже не упоминаете, что он должен искать. Он предназначен для перехода на страницу выпуска, это не просто «в случае неудачи (установка компилятора), он должен перейти на страницу выпуска» – barlop 21 апр. 2017, 12:53
-
mingw также популярен. – Zan Lynx, 22 апр. ’17 в 1:29
-
Конкретный проект обычно адаптирован для использования с определенным набором инструментов компиляции (называемых «цепочкой инструментов») – какой из них обычно упоминается в файле readme (в UNIX и кроссплатформенных проектах, его условно называют BUILD или INSTALL). В проектах, которые обслуживаются не так хорошо, или в проектах для сред с несколькими хорошо известными инструментальными цепочками, пользователь должен угадывать формат и/или содержимое файлов проекта. – ivan_pozdeev 22 апр. ’17 в 17:14
-
TCC? В самом деле? Вы были несерьезны, правда? – Яшас 23 апр. ’17 в 06:56
добавить комментарий |
Файлы .c и .h являются исходным кодом C.
Вам необходимо установить компилятор C. например Visual Studio, tcc или что-то подобное, загрузите проект, а затем скомпилируйте его для запуска.
В противном случае у проекта есть страница выпуска (здесь), которая предоставит вам доступ к предварительному -компилированная версия для экономии времени и усилий.
Этот ответ будет направлен на общий вопрос создания приложения Windows только с исходным кодом (на C). Если вам повезет, как OP, вы сможете найти предварительно скомпилированные двоичные файлы.
Первое, что нужно знать, это то, что нет единого способа создать приложение из исходного кода. Вариаций примерно столько же, сколько разных проектов. Тем не менее, вот несколько общих шагов:
-
Если вам повезет, проект предоставит инструкции по сборке, обычно в
README
файл. Иногда также может быть файлINSTALL
или другая доступная документация. Если они есть, следуйте инструкциям. Это ваш лучший выбор.Как уже говорили другие, к сожалению, очень сложно восстановить необходимые шаги сборки без инструкций. Тем не менее, мы можем, по крайней мере, сделать здесь все возможное, что будет работать для большинства простых проектов..
-
При отсутствии инструкций следующий порт вызова – проверить, какой инструмент сборки требуется.
-
Если вы найдете файл с расширением
.sln
или.vcxproj
, это, вероятно, проект MSBuild/Visual Studio. Загрузите копию Visual Studio Community или Express (для C ++), откройте там файл проекта и нажмите кнопку воспроизведения на панели инструментов (или используйте меню сборки). -
Если вы найдете
Makefile
, вероятно, для этого потребуетсяmake
. Но здесь все становится еще сложнее, поскольку существует так много независимых и несовместимых систем, которые используютmake
.-
Поскольку он нацелен на Windows, он, вероятно, будет использовать MinGW. Загрузите его копию, запустите MSYS из начального меню, перейдите (
cd
) в каталог, содержащий ваш проект, и запуститеmake
. -
В тех редких случаях, когда вместо этого используется Cygwin (к сожалению, нет простого способа узнать, но если ошибки сборки MinGW выводятся с ошибкой, связанной с “posix”, это – неплохая ставка), вам придется вместо этого установить Cygwin. К сожалению, при этом не создаются собственные двоичные файлы Windows – вам придется каждый раз запускать программу через Cygwin.
-
-
«Инструмент сборки» может быть настраиваемым скриптом с именем
build.bat
или аналогичным. В этом случае вам придется либо открыть его и посмотреть, что внутри, либо попробовать запустить и посмотреть, в чем заключаются ошибки. Если вы откроете его и увидите упоминания оGCC
, вернитесь к 2.2.1. Шаг MinGW, но запустите собственный скрипт вместоmake
.
-
-
Возможно, что там нет инструмента для сборки вообще. Если вы столкнетесь только с одним файлом
.c
или.cpp
, то, вероятно, он достаточно прост, чтобы вы могли выполнить прямую компиляцию. Это, опять же, почти всегда MinGW, поэтому загрузите его, запустите оболочку MSYS, перейдите в каталог и вызовите либоgcc
, либоg ++
по мере необходимости – – напримерgcc -o program.exe program.c
-
Возможно, ничего из этого не сработает. Если на любом этапе вы получаете сообщения об ошибках, они могут содержать подсказку о том, чего не хватает. Одна из возможностей заключается в том, что вам не хватало определенных необходимых фреймворков или библиотек – если вы чувствуете, что можете попробовать их загрузить и добавить в свою среду сборки, но это, как правило, нетривиальный процесс и имеет так много вариантов, что нет способ охватить их в ответе.
Инструменты сборки
Инструмент сборки позволяет создать проект с очень небольшим количеством команд. Для большинства проектов с более чем одним исходным файлом инструмент сборки будет где-то задействован.. Существует несколько инструментов сборки, но наиболее распространенными являются:
-
make, который используется повсеместно в Linux и все чаще встречается в Windows. Проекты, в которых используется
make
, обычно можно идентифицировать по наличию Makefile -
MSBuild зависит от Windows и обычно используется вместе с Visual Studio. Как правило, они сопровождаются *.sln или *.vcxproj . файл.
toolchain – это компилятор и вспомогательные инструменты. Как и инструментов сборки, их несколько, и они обычно используются с одним из инструментов сборки.
-
MSVC – это набор инструментов Microsoft. Это наиболее распространенный набор инструментов для нативной разработки Windows. Обычно это используется с системой MSBuild, а сборки обычно создаются с помощью Visual Studio. Однако современные проекты MSVC также могут использовать
Makefile
. -
GCC (MinGW) это порт GCC для Windows. Обычно используется с
make
. Если проект изначально нацелен на Windows и имеетMakefile
, вероятно, это для MinGW-GCC. -
GCC (Cygwin ) создает среду, совместимую с POSIX. Это позволяет вам напрямую скомпилировать большинство программ, написанных для Linux или Unix, и заставить их работать непосредственно под Windows. Совсем недавно в Windows 10 альтернативой стал Bash в Ubuntu в Windows. GCC обычно используется вместе с
make
.
Фреймворки и библиотеки
Библиотеки – это многократно используемые наборы кода, написанные другими людьми, от которых зависят многие программы, чтобы не изобретать заново рулевое колесо. Эти зависимости должны быть доступны для сборки проекта. Если вам повезет, они будут включены в вашу первоначальную загрузку, но это не всегда так.
Frameworks , по сути, представляют собой набор библиотек. Во многих проектах используется один фреймворк, который вам тоже понадобится. Они также часто идут со своей собственной системой сборки, но перечислить их все было бы невозможно.
Самая сложная часть связана с дополнительными зависимостями фреймворка и библиотек. Если, скажем, проект использует Qt – тогда вам понадобится весь этот беспорядок, чтобы правильно его построить. Это огромная задача, и, если у вас нет предыдущего опыта, вероятно, лучше просто попросить других напрямую помочь здесь..
отредактировано 23 апр. ’17 в 14:45
ответил 23 апр. ’17 в 14:33
-
В этом конкретном случае make-файл дает вам хорошую подсказку, что он предназначен для mingw, поскольку первая строка –
MINGW_PREFIX = $ (shell which gcc | awk -F/bin/'{printf $$ 1}')
🙂 – Дэвид Постилл ♦ 23 апреля 2017, 14:48 -
этот заслуживает награды imo – tbodt 23 апр. ’17 в 17:32
добавить комментарий |
Этот ответ будет направлен на общий вопрос о создании приложения Windows только с исходным кодом (в C). Если вам повезет, как OP, вы сможете найти предварительно скомпилированные двоичные файлы.
Первое, что нужно знать, это то, что нет единого способа создать приложение из исходного кода. Вариаций примерно столько же, сколько разных проектов. Тем не менее, вот несколько общих шагов:
-
Если вам повезет, проект предоставит инструкции по сборке, обычно в
README
файл. Иногда также может быть файлINSTALL
или другая доступная документация. Если они есть, следуйте инструкциям. Это ваш лучший выбор.Как уже говорили другие, к сожалению, очень сложно восстановить необходимые шаги сборки без инструкций. Тем не менее, мы можем, по крайней мере, сделать здесь все возможное, что будет работать для большинства простых проектов.
-
В отсутствие инструкций следующий порт вызова – проверьте, какой инструмент сборки требуется.
-
Если вы найдете файл с
.sln
или.vcxproj
, вероятно, это проект MSBuild/Visual Studio. Загрузите копию Visual Studio Community или Express (для C ++), откройте там файл проекта и нажмите кнопку воспроизведения на панели инструментов (или используйте меню сборки). -
Если вы найдете
Makefile
, вероятно, для этого потребуетсяmake
. Но здесь все становится еще сложнее, поскольку существует так много независимых и несовместимых систем, которые используютmake
.-
Поскольку он нацелен на Windows, он, вероятно, будет использовать MinGW. Загрузите его копию, запустите MSYS из начального меню, перейдите (
cd
) в каталог, содержащий ваш проект, и запуститеmake
. -
В тех редких случаях, когда вместо этого используется Cygwin (к сожалению, нет простого способа сказать, но если ошибки сборки MinGW выявляются с помощью связанного с “posix” ошибка, это достойная ставка), вам придется вместо этого установить Cygwin. К сожалению, при этом не создаются собственные двоичные файлы Windows – вам придется каждый раз запускать программу через Cygwin.
-
-
«Инструмент сборки» может быть настраиваемым скриптом с именем
build.bat
или аналогичным. В этом случае вам придется либо открыть его и посмотреть, что внутри, либо попробовать запустить и посмотреть, в чем заключаются ошибки. Если вы откроете его и увидите упоминания оGCC
, вернитесь к 2.2.1. Шаг MinGW, но запустите собственный скрипт вместоmake
.
-
-
Возможно, что там нет инструмента для сборки вообще. Если вы столкнетесь только с одним файлом
.c
или.cpp
, то, вероятно, он достаточно прост, чтобы вы могли выполнить прямую компиляцию. Это, опять же, почти всегда MinGW, поэтому загрузите его, запустите оболочку MSYS, перейдите в каталог и вызовите либоgcc
, либоg ++
по мере необходимости – – напримерgcc -o program.exe program.c
-
Возможно, ничего из этого не сработает. Если на любом этапе вы получаете сообщения об ошибках, они могут содержать подсказку о том, чего не хватает. Одна из возможностей заключается в том, что вам не хватало определенных необходимых фреймворков или библиотек – если вы чувствуете, что можете попробовать их загрузить и добавить в свою среду сборки, но это, как правило, нетривиальный процесс и имеет так много вариантов, что нет способ охватить их в ответе.
Инструменты сборки
Инструмент сборки позволяет создать проект с очень небольшим количеством команд. Для большинства проектов с более чем одним исходным файлом где-то будет задействован инструмент сборки. Существует несколько инструментов сборки, но наиболее распространенными являются:
-
make, который используется повсеместно в Linux и все чаще встречается в Windows. Проекты, в которых используется
make
, обычно можно идентифицировать по наличию Makefile -
MSBuild зависит от Windows и обычно используется вместе с Visual Studio. Как правило, они сопровождаются *.sln или *.vcxproj . файл.
toolchain – это компилятор и вспомогательные инструменты. Как и инструментов сборки, их несколько, и они обычно используются с одним из инструментов сборки.
-
MSVC – это набор инструментов Microsoft. Это наиболее распространенный набор инструментов для нативной разработки Windows. Обычно это используется с системой MSBuild, а сборки обычно создаются с помощью Visual Studio. Однако современные проекты MSVC могут использовать и
Makefile
. -
GCC (MinGW) это порт GCC для Windows. Обычно используется с
make
. Если проект изначально нацелен на Windows и имеетMakefile
, вероятно, это для MinGW-GCC. -
GCC (Cygwin ) создает среду, совместимую с POSIX. Это позволяет вам напрямую скомпилировать большинство программ, написанных для Linux или Unix, и заставить их работать непосредственно под Windows. Совсем недавно в Windows 10 альтернативой стал Bash в Ubuntu в Windows. GCC обычно используется вместе с
make
.
Фреймворки и библиотеки
Библиотеки – это многократно используемые наборы кода, написанные другими людьми, от которых зависят многие программы, чтобы не изобретать заново рулевое колесо. Эти зависимости должны быть доступны для сборки проекта. Если вам повезет, они будут включены в вашу первоначальную загрузку, но это не всегда так.
Frameworks , по сути, представляют собой набор библиотек. Во многих проектах используется один фреймворк, который вам тоже понадобится. Они также часто идут со своей собственной системой сборки, но перечислить их все было бы невозможно.
Самая сложная часть связана с дополнительными зависимостями фреймворка и библиотек. Если, скажем, проект использует Qt – тогда вам понадобится весь этот беспорядок, чтобы правильно его построить. Это огромная задача, и, если у вас нет предыдущего опыта, вероятно, лучше просто попросить других напрямую помочь здесь.
Git и Github. Простые рецепты
При разработке собственного проекта, рано или поздно, приходится задуматься о том, где хранить исходный код и как поддерживать работу с несколькими версиями. В случае работы на компанию, обычно это решается за вас и необходимо только поддерживать принятые правила. Есть несколько общеупотребимых систем контроля версий, и мы рассмотрим одну из самых популярных — это Git и сервис Github.
Система Git появилась, как средство управления исходными текстами в операционной системе Linux и завоевала множество поклонников в среде Open Source.
Сервис Github предоставляет хостинг (хранение) исходных текстов как на платной, так и на бесплатной основе. Это одна из крупнейших систем, которую любят Open Source пользователи. Основное отличие платной версии — это возможность создания частных репозиториев (хранилищ) исходных текстов и если вам скрывать нечего, то можете спокойно пользоваться бесплатной версией.
После того, как вы начали работу над проектом и написали какой-то работающий прототип, у вас появится желание сохранить результаты работы. Это так же может быть полезно в случае, если вы захотите продолжить работу на другом компьютере. Самое простое решение — это сохранить все на флешке. Этот вариант неплохо работает, но если есть подключение к интернету (а сейчас у кого его нет), то удобно воспользоваться системами Git/Github.
В этой статье будут описаны базовые сценарии использования систем Git/Github при работе над проектом в среде Linux с помощью командной строки. Все примеры проверялись на системе с Linux Ubuntu 14.04 и Git 1.9.1. Если вы пользуетесь другим дистрибутивом, то возможны отличия.
Создание локального репозитория
Предположим, что ваш проект находится в папке /home/user/project. Перед тем, как сохранять исходники, можно посмотреть, нет ли временных файлов в папке с проектом и по возможности их удалить.
Для просмотра папки удобно воспользоваться командой tree, которая покажет не только содержимое каждой папки, но и древовидную структуру директорий.
Часто временные файлы содержат специфические суффиксы, по которым их легко обнаружить и в последствии удалить. Для поиска таких файлов можно воспользоваться командой find. В качестве примера посмотрим, как найти все файлы, которые генерируются компилятором Python и имеют расширение .pyc
Переходим в папку с проектом /home/user/project:
И показываем список файлов с расширением .pyc:
Эта команда выведет список всех файлов с расширением .pyc в текущей директории и в ее поддиректориях. Для удаления найденных файлов, достаточно добавить ключ -delete к этой команде:
Очень рекомендуется не спешить и сразу ключ этот не добавлять. Первый раз вызвать команду для просмотра файлов и только убедившись, что в список не попало ничего полезного добавить ключ удаления.
Создадим локальный репозиторий в папке с проектом:
После выполнения этой команды появится новая папка с именем .git. В ней будет несколько файлов и поддиректориев. На данный момент система управления версиями еще не видит наших файлов.
Добавление файлов в локальный репозиторий
Для добавления файлов используется команда:
После выполнения команды, файл readme будет добавлен в систему управления версий (конечно если он уже был то этого в проекте). При добавлении файла генерируется хеш значение, которое выглядит примерно так:
Добавленные файлы хранятся в папке .git/objects/xx/yyyyyyyy, при этом первые 2 цифры хеша ипользуются для указания директории, а остальное хеш значение является именем файла. Наш добавленный файл будет находится здесь:
Что легко увидеть с помощью команды:
Сам файл является архивом, который легко распаковать и вывести на экран, указав полное значение хеша.
Для того, чтобы добавить все файлы из текущей директории введите:
Если нужно добавить файлы из текущей директории и из всех поддиректориев, то используйте:
Для того, чтобы в систему не попадали временные файлы, можно их занести в файл .gitignore, который нужно создать самостоятельно и разместить в корневом каталоге проекта (на том же уровне, что и .git директория).
Например, если в в файл .gitignore добавить следующую строчку *.pyc, то все файлы с расширением .pyc не будут добавляться в репозиторий.
После добавления файлов, все изменения находятся в так называемой staging (или cached) area. Это некоторое временнное хранилище, которое используется для накопления изменений и из которого создаются собственно версии проектов (commit).
Для просмотра текущего состояния можно воспользоваться командой:
После выполнения команды мы увидим, что в stage area находится наш файл:
Если вы продолжите вносить изменения в файл readme, то после вызова команды git status вы увидите две версии файла.
Чтобы добавить новые изменения достаточно повторить команду. Команда git add не только добавляет новые файлы, но и все изменения файлов, которые были добавлены ранее.
Можно отменить добавления файла readme в staging area с помощью команды:
После выполнения команды, файл readme отметится, как неизмененный системой.
Создание версии проекта
После того, как мы добавили нужные файлы в staging area мы можем создать версию проекта. С помощью команды:
Каждая новая версия сопровождается комментарием.
После коммита, мы сможем найти два новых объекта внутри .git репозитория.
Посмотрим, что внутри:
Ключ -t показывает тип объекта. В результате мы видим:
Для второго объекта:
Для самого первого файла:
Если мы будем дальше изучать содержимое этих файлов, то обнаружим древовидную структуру. От каждого коммита можно по ссылкам пройти по всем измененным файлам. Для практического применения это не очень нужно, но возможно так будет легче понять, что происходит при работе с системой Git.
Самую первую версию отменить нельзя. Ее можно только исправить. Если вы хотите добавить изменения в последнюю версию, то после выполнения команды commit, добавляете необходимые изменения и вызываете:
Ключ —no-edit нужен, чтобы не вводить заново комментарий.
Можно просмотреть изменения, которые вы внесли последним коммитом:
Ключ —name-only нужен, чтобы показывать только имена измененный файлов. Без него по каждому измененнному файлу будет выдан список всех изменений.
Если вы продолжили работать и изменили только те файлы, которые были уже добавлены в систему командой git add, вы можете сделать коммит одной командой:
Для просмотра списка всех коммитов, воспользуйтесь командой:
Ключ —oneline нужен, чтобы уменьшить количество информации выдаваемой на экран. С этим ключем каждый коммит показывается в одну строчку. Например:
Для того, чтобы просмотреть изменения по конкретному коммиту, достаточно в команду git show добавить хеш значение коммита, которое можно получить с помощью предыдущей команды.
Для отмены последнего коммита (кроме самого первого) можно воспользоваться следующей командой:
Для того чтобы удалить все файлы в папке, которые не относятся к проекту и не сохранены в репозитории, можно воспользоваться командой:
Создание репозитория на Github
До текущего момента мы работали с локальным репозиторием, который сохранялся в папке на компьютере. Если мы хотим иметь возможность сохранения проекта в интернете, создадим репозиторий на Github. Для начала нужно зарегистрироваться на сайте github.com под именем myuser (в вашем случае это может быть любое другое имя).
После регистрации нажимаем кнопочку «+» и вводим название репозитория. Выбираем тип Public (репозиторий всегда Public для бесплатной версии) и нажимаем Create.
В результате мы создали репозиторий на сайте Github. На экране мы увидим инструкцию, как соединить наш локальный репозиторий со вновь созданным. Часть команд нам уже знакома.
Добавляем удаленный репозиторий (по протоколу SSH) под именем origin (вместо origin можно использовать любое другое имя).
Можем просмотреть результат добавления с помощью команды:
Если все было правильно сделано, то увидим:
Для того, чтобы отменить регистрацию удаленного репозитария введите:
Это может понадобиться, если вы захотите поменять SSH доступ на HTTPS. После этого можно добавить его опять, например под именем github и протоколом HTTPS.
Следующей командой вы занесете все изменения, которые были сделаны в локальном репозитории на Github.
Ключ -u используется для того, чтобы установить связь между удаленным репозиторием github и вашей веткой master. Все дальнейшие изменения вы можете переносить на удаленный репозиторий упрощенной командой.
Перенос репозитория на другой компьютер
После того, как репозиторий был создан на Github, его можно скопировать на любой другой компьютер. Для этого применяется команда:
Результатом выполнения этой команды будет создание папки project в текущем каталоге. Эта папка также будет содержать локальный репозиторий (то есть папку .git).
Так же можно добавить название папки, в которой вы хотите разместить локальный репозиторий.
Работа с одним репозиторием с разных компьютеров
С одним репозиторием с разных компьютеров может работать несколько разработчиков или вы сами, если например работаете над одним и тем же проектом дома и на работе.
Для получения обновлений с удаленного репозитория воспользуйтесь командой:
Если вы изменили ваши локальные файлы, то команда git pull выдаст ошибку. Если вы уверены, что хотите перезаписать локальные файлы, файлами из удаленного репозитория то выполните команды:
Вместо github подставьте название вашего удаленного репозитория, которое вы зарегистрировали командой git push -u.
Как мы уже знаем, для того чтобы изменения выложить на удаленный репозиторий используется команда:
В случае, если в удаленном репозитории лежат файлы с версией более новой, чем у вас в локальном, то команда git push выдаст ошибку. Если вы уверены, что хотите перезаписать файлы в удаленном репозитории несмотря на конфликт версий, то воспользуйтесь командой:
Иногда возникает необходимость отложить ваши текущие изменения и поработать над файлами, которые находятся в удаленном репозитории. Для этого отложите текущие изменения командой:
После выполнения этой команды ваша локальная директория будет содержать файлы такие же, как и при последнем коммите. Вы можете загрузить новые файлы из удаленного репозитория командой git pull и после этого вернуть ваши изменения которые вы отложили командой:
Toliak / Guide.md
Чтобы установить значение опции, отличное от «по умолчанию», необходимо дописать -DНАЗВАНИЕ_ОПЦИИ=Значение к команде конфигурирования. Команда после этого может выглядеть, например, так:
Чтобы сделать такое действие в CLion, необходимо перейти в: Settings -> CMake -> CMake options.
Если используется Hunter (пакетный менеджер), то прописываются его настройки
На этапе конфигурирования, CMake ожидает файл tools/gate/cmake/HunterGate.cmake .
Если этот файл не существует, возможны 2 варианта:
- Необходимо добавить гит подмодуль:
git submodule add https://github.com/hunter-packages/gate.git tools/gate
- Либо (если используется шаблонный репозиторий) необходимо обновить подмодули:
git submodule update —init —recursive
URL и SHA1 ядра Hunter можно получить в релизах: https://github.com/hunter-packages/gate.git
Дополнительные опции для компилятора (могут отсутствовать)
Подключение зависимых библиотек
Затем осуществляется подключение библиотек, в которых нуждается проект (Boost, GTest, Threads и т.д.)
Указания для Hunter о необходимо коллекционирования указанных пакетов
Указания о том, какие пакеты будут использованы (ожидается их наличие)
CONFIG — ключевое слово, показывающее маску названий конфигурационных файлов.
REQUIRED — обязательность подключения пакета (иначе — ошибка).
Добавление целей сборки
После настройки окружающией среды пишется информация о том, что ожидается получить в результате сборки
Указание директорий с заголовочными файлами
Указание библиотек для линковки
Названия библиотек из Hunter, как правило, имеют вид LibraryName::ComponentName .
Данные о библиотеках из пакета, добавленного через find_package хранятся в переменных. Например, для Threads: $
Для сборки тестирования необходимо наличие:
- Добавления пакета googletest (GTest в Hunter)
- Цели для сборки исполняемого файла
- Линковки gtest_main и gtest (GTest::main и GTest::gtest в Hunter) к цели
- Включенного тестирования в конфигурационном файле
Можно добавлять несколько тестовых целей под разными названиями. И даже с использованием разных фреймворков.
Для сборки и выполнения тестирования необходимо выполнить следующую команду (ожидается предварительное конфигурирование):
Пример тела конфигурационного файла с тестированием:
Для удобства в CLion необходимо добавить конфигурацию сборки google test.
Начало конфигурации. Как правило, его трогать не надо.
Далее прописываются цели, которые будут проанализированы на процент покрытия.
Конец конфигурации. Как правило, не надо трогать.
Для начала необходимо настроить окружение. Как правило, это не надо трогать
Далее необходимо указать jobs’ы, которые будет выполнять Travis. Jobs содержит название и команды.
К таким относятся, например, правила для веток и для уведомлений. Например:
Сборка программ из исходников в Linux
Пользователям Linux необходимо хотя бы приблизительно знать как происходит сборка программ из исходников. Так как вы можете столкнуться стем, что вашей программы может и не быть скомпилированной под ваш дистрибутив. Сама сборка программ не сложна, и обычно описана в файле README или INSTALL, который идет вместе с пакетами для сборки. Так что, будьте внимательны. И так, сборку из исходников мы будем разбирать на примере программы GParted. Но, для начала давайте установим необходимые утилиты – интерпретатор и компилятор, для того, что бы можно было собирать программы. Для установки необходимых утилит вводим команду:
Debian/Ubuntu
Arch/Manjaro
Сборка программ c Github
И начнем мы с GParted, сборку или как еще называется данный процесс – компиляцию мы будем выполнять в Ubuntu 20.04. Вы можете спросить почему именно в Ubuntu, отвечу, для Arch Linux и подобных есть AUR. Да и со сборкой программ в Arch мы разберемся чуть позже. Там можно найти практически все программы, которые существуют для Linux. Для начала нужно скачать исходники программы, для этого переходим на сайт, скачиваем, а затем распаковываем архив. Так же можно выполнить команду:
Затем переходим в папку:
Теперь заглянем в файл README и посмотрим его внимательно. Если приглядеться, то можно увидеть какие зависимости необходимы доустановить:
Обратите внимания, что GPArted хорошо документированная, и для установки под каждый дистрибутив имеется инструкция с дополнительными зависимостями. Устанавливаем зависимости и выполняем команду для того, что бы у вас сформировался установочный файл:
Если проблема с зависимостями у вас останется, то вы увидите об этом вывод:
После того, как вы установите все необходимые зависимости, запускаете снова “autogen.sh”. В итоге он вам скажет что можно приступать к дальнейшим действиям:
Далее запускаем “make” и затем когда “make” выполнит свою работу, запускаем “sudo make install”. Обратите внимания, в некоторых инструкциях не упоминается о том, что нужно установку программы выполнять именно от “sudo”, а именно: “sudo make install”. Из за этого у вас могут возникнуть проблемы. И так продолжаем сборку программы вводим команды:
Стоит отметить, что многие программы с открытым исходным кодом, можно найти на github. Там обычно самая последняя версия программы, по этому, если есть такая возможность, то лучше собирать программы с github.
После установки можно найти программу в меню установленных программ.
Сборка программ из архива
Распаковывать архив можно из терминала, а можно при помощи графического интерфейса, например программой Ark или Менеджер архивов. Тут все зависит от того, как вам удобней. Для того что бы распаковать архив в терминале, нужно выполнить определенную команду. На примере с GParted такой командой будет:
Примечание, tar является утилитой командной строки для распаковки архивов. И так, затем переходим в папку с распакованной программой и смотрим какие там имеются файлы. Тут как раз имеются README:
Для наглядности я открою файл README в графической утилите Mousepad. Как вы можете заметить, в инструкции подробно прописано как устанавливать данную программу из исходников:
Для того что бы собрать данную программу, достаточно выполнить команды, которые прописаны в инструкции. Так как мы уже распаковали данный архив, пропускаем это шаг. Если вы не знаете как перейти в терминале в директорию программы, поясню. А если знаете, то пропустите данный шаг. Для того что бы перейти в терминале в нужную директорию, используется команда “cd“. Например, у вас папка с программой находится по адресу “Загрузки – папка с программой”, выполняем команду:
После чего можно посмотреть что у нас имеется в данной директории введя команду “ls“, после чего снова вводим команду “cd” и переходим в нужную нам директорию. Например:
Теперь приступаем к сборке программы GParted. Для этого вводим команды которые написаны в файле README.
На этом этапе установки могут возникнуть проблемы с зависимостями. По этому их необходимо установить:
После того как все необходимые зависимости были установлены, снова запускаем “./configure” и продолжаем компиляцию программы как описано выше. А именно, после запуска “./configure” запускаем “make”, а затем “sudo make install”.
Ошибки при сборке программы
Возможно, при компилировании у вас могут возникнуть проблемы с зависимостями. Для этого надо будет устанавливать необходимые пакеты. Обычно если у вас не хватает зависимостей, вы увидите во время выполнения команды ./configure ошибки. Если же вы не знаете какой зависимости не хватает, то тут выручит поисковик.
После того как вы установите необходимые зависимости, снова необходимо запустить ./configure. А может быть и так, что у вас не будет файла ./configure, попробуйте запустить другие скрипты:
Если таких скриптов вы не смогли найти, то можно выполнить последовательно следующие команды:
В случае с дистрибутивами Arch/Manjaro необходимые пакеты вы можете подгрузить используя “Менеджер программ”, Предварительно не забыв подключить репозиторий AUR:
Пример необходимых зависимостей при установки в Manjaro программы Blender. Компиляция производилась с использованием файла PKGBUILD:
Удаление программ
Если же вы захотите в будущем удалить GParted, или какую то иную программу, оставьте папку которую скачивали. Так как только в ней есть инструкция куда устанавливались те или иные пакеты. Обычно, в файле README написано как удалять установленные программы. В случае с GParted достаточно перейти в каталог с исходниками и выполнить команду:
Сборка в Arch/Manjaro (Arch Build System – ABS)
В дистрибутивах Arch и Arch подобных есть несколько способов устанавливать программное обеспечение, собственно, как и во многих других дистрибутивах. Но, в Arch имеется AUR, это пользовательский репозиторий, где лежат программы, которые не вошли в официальные репозитории. А так же существует способ собрать программу из исходников и вот тут вы можете столкнуться с тем, что вам попадется файл “PKGBUILD”. PKGBUILD это грубо говоря скрипт, который содержит инструкцию по скачиванию необходимых пакетов. Так же вместе с PKGBUILD могут быть и другие файлы, например “blender.desktop”. Вы можете открыть PKGBUILD и изменить необходимые параметры, но, это только при условии что вы знаете что делаете. Предположительно, вы уже перешли в каталог с исходниками программы, если же нет, сделать это можно командой в терминале “cd и путь к директории”. Для сборки пакета выполняем команду:
Опишу опции которые тут применяются, опция -s произвести проверку и установку зависимостей, а опция i установку самого пакета:
Сама сборка програм из исходников может занять значительное время, в зависимости от вашего компьютера.
Заключение
Может случится и такое, что необходимые зависимости при компиляции программ вы попросту не найдете в официальных репозиториях. Для этого можно воспользоваться поиском, после чего найдя их, устанавливаете. Можно посмотреть и на сайте pkgs.org. На этом сайте вы сможете найти разного рода пакеты для множества дистрибутивов Linux для решения проблем при сборке программ.
А на этом сегодня все. Надеюсь данная статья будет вам полезна.
С уважением Cyber-X
Часть 2
Что такое Git и зачем он нужен?
Git — это консольная утилита, для отслеживания и ведения истории изменения файлов, в вашем проекте. Чаще всего его используют для кода, но можно и для других файлов. Например, для картинок — полезно для дизайнеров.
С помощью Git-a вы можете откатить свой проект до более старой версии, сравнивать, анализировать или сливать свои изменения в репозиторий.
Репозиторием называют хранилище вашего кода и историю его изменений. Git работает локально и все ваши репозитории хранятся в определенных папках на жестком диске.
Так же ваши репозитории можно хранить и в интернете. Обычно для этого используют три сервиса:
-
GitHub
-
Bitbucket
-
GitLab
Каждая точка сохранения вашего проекта носит название коммит (commit). У каждого commit-a есть hash (уникальный id) и комментарий. Из таких commit-ов собирается ветка. Ветка — это история изменений. У каждой ветки есть свое название. Репозиторий может содержать в себе несколько веток, которые создаются из других веток или вливаются в них.
Как работает
Если посмотреть на картинку, то становиться чуть проще с пониманием. Каждый кружок, это commit. Стрелочки показывают направление, из какого commit сделан следующий. Например C3
сделан из С2
и т. д. Все эти commit находятся в ветке под названием main
. Это основная ветка, чаще всего ее называют master
. Прямоугольник main*
показывает в каком commit мы сейчас находимся, проще говоря указатель.
В итоге получается очень простой граф, состоящий из одной ветки (main
) и четырех commit. Все это может превратиться в более сложный граф, состоящий из нескольких веток, которые сливаются в одну.
Об этом мы поговорим в следующих статьях. Для начала разберем работу с одной веткой.
Установка
Основой интерфейс для работы с Git-ом является консоль/терминал. Это не совсем удобно, тем более для новичков, поэтому предлагаю поставить дополнительную программу с графическим интерфейсом (кнопками, графиками и т.д.). О них я расскажу чуть позже.
Но для начала, все же установим сам Git.
-
Windows. Проходим по этой ссылке, выбираем под вашу ОС (32 или 64 битную), скачиваем и устанавливаем.
-
Для Mac OS. Открываем терминал и пишем:
#Если установлен Homebrew
brew install git
#Если нет, то вводим эту команду.
git --version
#После этого появится окно, где предложит установить Command Line Tools (CLT).
#Соглашаемся и ждем установки. Вместе с CLT установиться и git
-
Linux. Открываем терминал и вводим следующую команду.
# Debian или Ubuntu
sudo apt install git
# CentOS
sudo yum install git
Настройка
Вы установили себе Git и можете им пользоваться. Давайте теперь его настроим, чтобы когда вы создавали commit, указывался автор, кто его создал.
Открываем терминал (Linux и MacOS) или консоль (Windows) и вводим следующие команды.
#Установим имя для вашего пользователя
#Вместо <ваше_имя> можно ввести, например, Grisha_Popov
#Кавычки оставляем
git config --global user.name "<ваше_имя>"
#Теперь установим email. Принцип тот же.
git config --global user.email "<адрес_почты@email.com>"
Создание репозитория
Теперь вы готовы к работе с Git локально на компьютере.
Создадим наш первый репозиторий. Для этого пройдите в папку вашего проекта.
#Для Linux и MacOS путь может выглядеть так /Users/UserName/Desktop/MyProject
#Для Windows например С://MyProject
cd <путь_к_вашему_проекту>
#Инициализация/создание репозитория
git init
Теперь Git отслеживает изменения файлов вашего проекта. Но, так как вы только создали репозиторий в нем нет вашего кода. Для этого необходимо создать commit.
#Добавим все файлы проекта в нам будующий commit
git add .
#Или так
git add --all
#Если хотим добавить конкретный файл то можно так
git add <имя_файла>
#Теперь создаем commit. Обязательно указываем комментарий.
#И не забываем про кавычки
git commit -m "<комментарий>"
Отлично. Вы создали свой первый репозиторий и заполнили его первым commit.
Процесс работы с Git
Не стоит после каждого изменения файла делать commit. Чаще всего их создают, когда:
-
Создан новый функционал
-
Добавлен новый блок на верстке
-
Исправлены ошибки по коду
-
Вы завершили рабочий день и хотите сохранить код
Это поможет держать вашу ветки в чистоте и порядке. Тем самым, вы будете видеть историю изменений по каждому нововведению в вашем проекте, а не по каждому файлу.
Визуальный интерфейс
Как я и говорил ранее, существуют дополнительные программы для облегчения использования Git. Некоторые текстовые редакторы или полноценные среды разработки уже включают в себя вспомогательный интерфейс для работы с ним.
Но существуют и отдельные программы по работе с Git. Могу посоветовать эти:
-
GitHub Desktop
-
Sourcetree
-
GitKraken
Я не буду рассказывать как они работают. Предлагаю разобраться с этим самостоятельно.
Создаем свой первый проект и выкладываем на GitHub
Давайте разберемся как это сделать, с помощью среды разработки Visual Studio Code (VS Code).
Перед началом предлагаю зарегистрироваться на GitHub.
Создайте папку, где будет храниться ваш проект. Если такая папка уже есть, то создавать новую не надо.
После открываем VS Code .
-
Установите себе дополнительно анализаторы кода для JavaScript и PHP
-
Откройте вашу папку, которую создали ранее
После этого у вас появится вот такой интерфейс
-
Здесь будут располагаться все файлы вашего проекта
-
Здесь можно работать с Git-ом
-
Кнопка для создания нового файла
-
Кнопка для создания новой папки
Если ваш проект пустой, как у меня, то создайте новый файл и назовите его
index.html
. После этого откроется окно редактирование этого файла. Напишите в нем!
и нажмите кнопкуTab
. Автоматически должен сгенерироваться скелет пустой HTML страницы. Не забудьте нажатьctrl+s
чтобы файл сохранился.
Давайте теперь перейдем во вкладу для работы с Git-ом.
Откроется вот такое окно:
-
Кнопка для публикации нашего проекта на GitHub
-
После нажатия на кнопку
1
, появится всплывающее окно. Нужно выбрать второй вариант или там где присутствует фраза...public repository
Если вы хотите создать локальный репозиторий и опубликовать код в другой сервис, то необходимо нажать на кнопку
Initialize Repository
. После этого, вручную выбрать сервис куда публиковать.
После того, как выбрали «Опубликовать на GitHub публичный репозиторий» (пункт 2), программа предложит вам выбрать файлы, которые будут входить в первый commit. Проставляем галочки у всех файлов, если не проставлены и жмем ОК
. Вас перекинет на сайт GitHub, где нужно будет подтвердить вход в аккаунт.
Вы создали и опубликовали репозиторий на GitHub.
Теперь сделаем изменения в коде и попробуем их снова опубликовать. Перейдите во вкладку с файлами, отредактируйте какой-нибудь файл, не забудьте нажать crtl+s
(Windows) или cmd+s
(MacOS), чтобы сохранить файл. Вернитесь обратно во вкладу управления Git.
Если посмотреть на значок вкладки Git, то можно увидеть цифру 1 в синем кружке. Она означает, сколько файлов у нас изменено и незакоммичено. Давайте его закоммитим и опубликуем:
-
Кнопка для просмотра изменений в файле. Необязательно нажимать, указал для справки
-
Добавляем наш файл для будущего commit
-
Пишем комментарий
-
Создаем commit
-
Отправляем наш commit в GitHub
Поздравляю, вы научились создавать commit и отправлять его в GitHub!
Итог
Это первая вводная статья по утилите Git. Здесь мы рассмотрели:
-
Как его устанавливать
-
Как его настраивать
-
Как инициализировать репозиторий и создать commit через консоль
-
Как на примере VS Code, опубликовать свой код на GitHub
Забегая вперед, советую вам погуглить, как работают следующие команды:
git help # справка по всем командам
git clone
git status
git branch
git checkout
git merge
git remote
git fetch
git push
git pull
P.S. Для облегчения обучения, оставлю вам ссылку на бесплатный тренажер по Git.
https://learngitbranching.js.org/
В телеграмм канале Step by Step , я публикую еще больше материала и провожу обучающие стримы, для всех желающих.
https://gbcdn.mrgcdn.ru/uploads/post/2647/og_image/ecf77551ce8bbb63bd84cedacb83dd8f.png
Мы уже рассказывали о том, что такое GitHub и зачем он нужен. В этой статье разберём его установку, настройку и сделаем первый пуш.
Для работы с Git можно скачать готовые GUI — наглядные графические интерфейсы для управления репозиторием, например GitKraken или GitHub Desktop. Это отличное решение для новичка, но потом все, как правило, переходят на консоль.
Сегодня поговорим как раз о том, как можно пользоваться Git из консоли. То есть освоим один из самых популярных способов.
Как установить Git
Чтобы использовать команды Git, сперва его нужно поставить на компьютер.
На iOS он чаще всего идёт из коробки: чтобы найти его, нужно открыть терминал и набрать git —version:
Если вдруг его у вас нет, можно воспользоваться менеджером недостающих пакетов для macOS — Homebrew. Для установки пропишите в консоли brew install git.
Чтобы использовать Git на системе Linux, нужно поставить пакет Git. Например, для установки на Ubuntu нужно будет прописать sudo apt install git.
Если вы используете Windows, потребуется поставить консоль. Выберите нужный файл исходя из разрядности вашей системы и загрузите его:
После того как скачаете его, запустите установщик:
Для скорости можно не менять дефолтные настройки и прокликать Next:
Теперь вы можете использовать на Windows такую же консоль, как и на iOS:
Все описанные ниже команды будут работать как в терминале на iOS и Linux, так и в Windows.
Регистрация в Git
Чтобы воспользоваться сервисом, нужно зайти на сайт GitHub и зарегистрировать нового пользователя. Придумайте имя и пароль, а также введите email, к которому у вас есть доступ:
Теперь, когда у вас есть свой аккаунт, нужно залогиниться в самой консоли, чтобы связать их. Для этого понадобится выполнить команды в консоли, которые зададут имя пользователя и почтовый ящик.
git config —global user.name «user-name»
git config —global user.email email@example.com
Вместо user-name подставьте логин, который указывали при регистрации. В нашем случае это test-github-04, а вместо email@example.com — адрес вашей электронной почты. В нашем примере — testgithub@gmail.com.
Если вы всё сделали по инструкции, то при выполнении команды git config —list отобразится ваше имя пользователя:
Не забудьте верифицировать аккаунт: откройте первое письмо на почте от GitHub и пройдите по ссылке. Иначе вы не сможете создавать репозитории.
Как опубликовать первый проект на Git
Зайдите в ваш профиль: для этого кликните по иконке в правом верхнем углу и нажмите Your Profile:
Теперь создайте репозиторий: перейдите во вкладку Repositories и кликните по кнопке New:
Задайте имя репозитория. Мы придумали название проекта test-github и сделали его публичным, чтобы его могли просматривать все пользователи. Далее нажмите кнопку Create repository:
Пока проект пустой, но мы можем поместить в него наши файлы с локальной машины.
Будем использовать протокол HTTPS — с ним проще работать с Git, чем с SSH. Подробнее про различия протоколов можно прочитать в документации.
Github предлагает несколько вариантов создания проекта:
- клонировать папку по выбранному протоколу;
- создать проект с нуля — сегодня мы рассмотрим именно этот способ;
- опубликовать уже созданный проект;
- скопировать проект.
Создание проекта с нуля
При помощи команды cd нужно найти нужную папку. Про часто используемые команды можно прочитать в статье про работу с терминалом.
Команда echo «# test-github» >> README.md добавляет новый файл в проект. Его также можно создать вручную в папке.
git init — инициализирует проект. После инициализации создаётся специальная скрытая папка для Git:
В ней файлы и папки генерируются автоматически. Они нужны для корректной работы Git, никакого дополнительного взаимодействия с этой папкой не предусмотрено:
git add README.md — добавляет изменённые файлы к коммиту. Также это можно сделать при помощи команды git add . — в таком случае вы добавите не конкретные файлы, а все изменённые, если их много:
git status поможет проверить, что происходит с изменёнными файлами. В нашем случае, например, файлы не прикреплены к коммиту:
git commit -m «first commit» добавляет сообщение к коммиту — то, что будет отображаться в истории. В скобках можно указать любой текст. Как правило, в нём кратко описывают, что делали в коммите.
Теперь снова посмотрим, что скажет git status. Сейчас он пустой, так как все изменённые файлы мы прикрепили к только что созданному коммиту:
git log показывает историю коммитов:
git branch позволяет просмотреть ветки. В нашем примере текущая ветка называется master. Но с 2020 года GitHub выступает за то, чтобы главная ветка называлась main (по политическим причинам) и рекомендует переименовать ветку с помощью команды git branch -M main.
Команда git remote add origin https://github.com/test-github-04/test-github.git добавляет сервер, где origin — это имя сервера, а url — это адрес.
У вас может быть несколько удалённых серверов, с которыми работает проект. Проверить добавленные сервера можно командой git remote -v (fetch — откуда забирать, push — куда отправлять изменения).
git push -u origin main позволяет запушить (отправить) ветку main на сервер origin. Тут вам, скорее всего, потребуется связать приложение и GitHub, повторно залогинившись через браузер.
И теперь вас можно поздравить с первым опубликованным проектом!
В следующих статьях мы рассмотрим альтернативные способы публикации проекта и дальнейшее взаимодействие с ним. Если у вас есть идеи, что ещё стоит разобрать в наших гайдах, оставляйте комментарии!
Если проект живет на GitHub, можно за десять минут настроить авто-сборку под основные операционные системы — Windows, Linux и macOS.
Раньше для сборки почти всегда использовали Travis CI, многие по инерции и сейчас так делают. Но есть способ лучше — GitHub Actions.
GitHub Actions — невероятно мощный бесплатный сервис автоматизации любых задач. Грубо говоря, вы выполняете свой код на серверах Гитхаба и делаете там все, что заблагорассудится. Звучит диковато, но открывает бездну возможностей. В том числе — автоматическую сборку проекта под все ОС. Особенно приятно, что можно собирать под Windows.
Вот как это работает:
- Создаете файл конфигурации.
mkdir -p .github/workflows
touch .github/workflows/build.yml
- Указываете условия запуска сборки.
Например, собирать при каждом коммите:
Или только из новых тегов:
- Перечисляете операционные системы.
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: ubuntu-latest
- os: windows-latest
- os: macos-latest
- Указываете шаги сборки.
- uses: actions/checkout@v2
- name: Build for Linux
if: matrix.os == 'ubuntu-latest'
run: gcc -fPIC -lm -shared src/stats.c -o dist/sqlite3-stats.so
- name: Build for Windows
if: matrix.os == 'windows-latest'
run: gcc -fPIC -lm -shared src/stats.c -o dist/sqlite3-stats.dll
- name: Build for macOS
if: matrix.os == 'macos-latest'
run: gcc -fno-common -dynamiclib src/stats.c -o dist/sqlite3-stats.dylib
Действие actions/checkout
скачивает исходники, а на остальных шагах выполняются те команды, что указаны по тексту. В примере это сборка исходного кода на C с помощью gcc
, но у вашего проекта может быть npm run
для JS или tox
для Python — то, что обычно используете для сборки.
Если для вашего языка есть стандартный репозиторий пакетов вроде npm
или pypi
— здесь же можно опубликовать сборку. Если репозитория нет, можно опубликовать прямо на гитхабе с помощью действия svenstaro/upload-release-action
:
- name: Upload binaries to release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: dist/${{ matrix.artifact_name }}
asset_name: ${{ matrix.asset_name }}
tag: ${{ github.ref }}
- Полный пример конфигурации
- Коммитите изменения, пушите и наблюдаете результат на вкладке Actions репозитория на Гитхабе.
⌘ ⌘ ⌘
Готово! Теперь Гитхаб трудится, а вы отдыхаете.
Еще почитать:
- Документация по GitHub Actions
- Как сделать все что угодно вообще с GitHub Actions
Подписывайтесь на канал, чтобы не пропустить новые заметки 🚀