• Ну и что вы думаете? Мы взяли и создали свой собственный чат, с блекджеком и шлюхами, теперь все легенды в одном месте: даже те 1000 человек, которых мы забанили в старом чате 🫡 Будем публиковать там очень интересные подробности нового дизайна форума, oh yeah

    Вступай и становись легендой, пока это не стало поздно: жмякай на меня, ток не сильно(

Гайд Знакомство с Premake (инструмент для автоматизации сборки проектов)

Начинающий
Статус
Оффлайн
Регистрация
7 Янв 2024
Сообщения
44
Реакции[?]
15
Поинты[?]
15K
Привет, друзья!
Сегодня с Вами познакомимся с Premake, как указано в тайтл, это инструмент автоматизации сборки программ.
Иными словами, вам не нужно будет самостоятельно настраивать проекты в Visual Studio — это сделает утилита, для которой вы укажете настройки и зависимости проекта.

Нахуя это нужно? - Premake позволяет вам описать структуру и зависимости проекта в простом и понятном формате, а затем генерировать необходимые файлы проекта (.sln, .vcxproj, .vcxproj.user, .vcxproj.filters).

Этап 1. Установка

Скачиваем архив с утилитой:
1737510787403.png

Пожалуйста, авторизуйтесь для просмотра ссылки.
- Скачиваем здесь (no ad)

Создаём на диске C (или диске на котором ваша система) папку premake и закидываем туда premake5.exe
1737510984037.png


Далее Win + X > Параметры > Система > О программе > Дополнительные параметры системы > Переменные среды:
1737511361653.png

Добавляем в Системные переменные > Path, директорию в которой наша утилита

Отлично, теперь мы имеем доступ к premake из любой директории (Хуй знает почему premake не имеет инсталлера который бы сделал эти действия за нас)

Этап 2. Создание проекта

main.cpp
C++:
#include <iostream>

int main() {
    printf("hello world!\n");
    return 0;
}
premake5.lua (Файл с настройками проекта)
Код:
workspace "HelloWorld"
   configurations { "Debug", "Release" }

project "HelloWorld"
   kind "ConsoleApp"
   language "C++"
   files { "main.cpp" }

   filter { "configurations:Debug" }
      defines { "DEBUG" }
      symbols "On"

   filter { "configurations:Release" }
      defines { "NDEBUG" }
      optimize "On"
1737512205221.png


Открываем cmd, пишем cd "путь к директории проекта", затем пишем следующее:
1737512485713.png

P.S: первый аргумент (vs2017) это версия моей Visual Studio, свою версию найдёте
Пожалуйста, авторизуйтесь для просмотра ссылки.
(no ad)

Этап 3. Заключение
Мы сгенерировали проект Visual Studio из настроек что были в нашем premake5.lua

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

BONUS Этап 4. Пройдёмся по документации
Допустим, нам нужно собрать библиотеку DLL, за это отвечает параметр kind, выше он указан как "ConsoleApp"
ConsoleAppA console or command-line application.

Для сборки DLL нам нужен параметр
SharedLibA shared library or DLL.

Представим ситуацию, что в нашем проекте используется PlaySoundA, но без линка либы этой функции мы получаем следующую ошибку:
LKN2019 ссылка на неразрешенный внешний символ __imp_PlaySoundA в функции ...

Открываем premake5.lua и добавляем новый параметр "links"
Код:
links ""

Гуглим функцию, видим что эта функция принадлежит либе
Winmm.dll

Подключаем её
Код:
links "Winmm.lib"

Ошибка устранена, кучу других параметров для настройки зависимостей и в целом проекта будет
Пожалуйста, авторизуйтесь для просмотра ссылки.
(no ad)

До связи!
 
Сверху Снизу