c-cpp-cookies
  • Полезные материалы
    • About
  • Настройка окружения
    • Git
      • Git CLI
      • Git GUI
      • Git Web
      • Git в среде разработке
        • Visual Studio
        • Visual Studio Code
        • CLion
        • Qt Creator
    • Стандарты (они же ISO)
    • Qt about
    • IDE
      • Visual Studio Code
        • Код в Visual Studio Code
        • Разработка в Visual Studio Code
      • Visual Studio
        • Настройки Visual Studio и проектов
        • Код в Visual Studio
        • Visual Studio + GitHub
      • Qt + Qt Creator
        • Установка Qt и QtCreator
        • Примеры проектов на Qt
      • CLion
        • Настройки CLion
        • Код в CLion
        • CLion + GitHub
    • Компиляторы
      • Clang + Visual Studio
      • Clang + CLion
  • Best practices
    • Антипаттерны и способы улучшения кода
      • 0. Освобождение ресурсов
      • 1. Чтение данных из файла
      • 2. Открытие файлов
      • 3. Объявление переменных
      • 4. Выделение памяти
      • 5. Необдуманный код
      • 6. Глубокие if
      • 7. Длинные if
      • 9. Non-void функции
      • 10. Создание массивов
      • 11. Проверка формата файла
  • Сборка программы
    • Сборка программы
    • Системы сборки / Build systems
      • Проект и решение
      • Make
      • Ninja
      • CMake
      • MSBuild
    • Подключение внешних библиотек
    • Библиотеки
  • Отладка
    • Отладка / Debugging
    • Запуск программы
    • Точки останова / Breakpoints
      • Обычные точки останова / General breakpoint
      • Условные точки останова / Conditional breakpoint
      • Зависимые точки останова / Dependent breakpoint
      • Временные точки останова / Temporary breakpoint
      • Точки трассировки / Breakpoint actions и tracepoints
    • Стек вызовов / Call stack
    • Локальные переменные / Locals
    • Просмотр области памяти / Memory view
    • Исключения / Exceptions
  • Анализ
    • Поиск утечек памяти
    • Санитайзеры
  • Возможности IDE
    • Возможности IDE
    • Продвинутый текстовый редактор
    • Закладки / Bookmarks
    • Платформы / Platforms
    • Конфигурации сборки / Build configurations
    • Шаблонные проекты / Project templates
    • Терминал / Terminal
    • Сборка / Build
    • Запуск программы / Run program
    • Code style
    • Работа с Github Actions
  • Тестирование
    • Тестирование
    • Google test
      • Gtest в VS
      • Gtest в CLion
      • Gtest в VSCode
    • Покрытие кода (code coverage)
Powered by GitBook
On this page
  • Сборка проекта
  • Результаты сборки проекта / Build log
  1. Возможности IDE

Сборка / Build

PreviousТерминал / TerminalNextЗапуск программы / Run program

Last updated 9 months ago

Сборка проекта

Сборка и запуск программы происходит по нажатию одной кнопки или сочетанию клавиш, что обычно удобнее, чем из командной строки. Если на одном из этапов сборки произошла ошибка, то сообщение о ней можно будет увидеть в окне "Output" или "Build output". Если при запуске сборки программы в IDE были открыты файлы с несохраненными изменениями, то они автоматически сохраняются перед сборкой.

Обратим внимание, что в Visual Studio есть два отдельных объекта: решение или solution и проект или project (одно из них является подмножеством другого). Если в решении (solution) хранится один проект (project), то можно использовать:

  • для сборки сочетание клавиш, по умолчанию, F7

  • для пересборки сочетание клавиш, по умолчанию, CTRL + ALT + F7

В ином случае же, когда проектов несколько и есть необходимость собрать/пересобрать только один из них, то нужно нажать ПКМ по названию проекта в Solution Explorer и выбрать в контекстном меню Build или Rebuild.

По умолчанию, в CLion горячей клавишей для сборки проекта является сочетание CTRL + F9.

Существует также альтернативный вариант в виде кнопки в виде молоточка или через кнопку Build.

В старом интерфейсе:

В новом интерфейсе:

Результаты сборки проекта / Build log

Обычно в адекватных IDE окно, что вещает нам о логах сборки проекта, называется или Output, или Build output или же Error List - там будет отображаться лог сборки. Мы разберём несколько примеров того, как может выглядеть лог в IDE.

Место, куда нужно смотреть – Output Window.

Успешная сборка
1>------ Build started: Project: DebuggingExample, Configuration: Debug x64 ------
1>main.c
1>DebuggingExample.vcxproj -> <path-to-project>\DebuggingExample\x64\Debug\DebuggingExample.exe
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
========== Elapsed 00:00.345 ==========
Ошибка компиляции
Build started...
1>------ Build started: Project: DebuggingExample, Configuration: Debug x64 ------
1>main.c
1><path-to-project>\DebuggingExample\main.c(17,9): error C2146: syntax error: missing ';' before identifier 'arr2'
1>Done building project "DebuggingExample.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
========== Elapsed 00:00.230 ==========
Ошибка линковки
Build started...
1>------ Build started: Project: DebuggingExample, Configuration: Debug Win32 ------
1>Source.c
1><path-to-project>\DebuggingExample\Source.c(12,22): warning C4013: 'bar' undefined; assuming extern returning int
1><path-to-project>\DebuggingExample\Source.c(17,1): warning C4047: 'initializing': 'char' differs in levels of indirection from 'char *'
1><path-to-project>\DebuggingExample\Source.c(18,1): warning C4047: 'initializing': 'char' differs in levels of indirection from 'char *'
1><path-to-project>\DebuggingExample\Source.c(19,1): warning C4047: 'initializing': 'char' differs in levels of indirection from 'char *'
1>Source.obj : error LNK2019: unresolved external symbol _bar referenced in function _foo
1><path-to-project>\DebuggingExample\Debug\DebuggingExample.exe : fatal error LNK1120: 1 unresolved externals
1>Done building project "DebuggingExample.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Место, куда нужно смотреть – Messages-Build.

Успешная сборка
  ====================[ Build | DebuggingExample | Debug ]========================
  "path-to-cmake\cmake.exe" --build <path-to-project>\DebuggingExample\cmake-build-debug --target DebuggingExample
  [1/2] Building C object CMakeFiles/DebuggingExample.dir/main.c.obj
  [2/2] Linking C executable DebuggingExample.exe
  Build finished
Ошибка компиляции
  ====================[ Build | DebuggingExample | Debug ]========================
  "path-to-cmake\cmake.exe" --build <path-to-project>\DebuggingExample\cmake-build-debug --target DebuggingExample
  [1/2] Building C object CMakeFiles/DebuggingExample.dir/main.c.obj
  FAILED: CMakeFiles/DebuggingExample.dir/main.c.obj 
  C:\msys64\mingw64\bin\cc.exe   -g -fdiagnostics-color=always -std=gnu11 -MD -MT CMakeFiles/DebuggingExample.dir/main.c.obj -MF CMakeFiles\DebuggingExample.dir\main.c.obj.d -o CMakeFiles/DebuggingExample.dir/main.c.obj -c C:/DebuggingExample/main.c
  <path-to-project>/DebuggingExample/main.c: In function 'main':
  <path-to-project>/DebuggingExample/main.c:5:5: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'return'
    5 |     return 0;
      |     ^~~~~~
  ninja: build stopped: subcommand failed.
Ошибка линковки
  ====================[ Build | DebuggingExample | Debug ]========================
  "path-to-cmake\cmake.exe" --build <path-to-project>\DebuggingExample\cmake-build-debug --target DebuggingExample
  [1/2] Building C object CMakeFiles/DebuggingExample.dir/main.c.obj
  [2/2] Linking C executable DebuggingExample.exe
  FAILED: DebuggingExample.exe 
  cmd.exe /C "cd . && C:\msys64\mingw64\bin\cc.exe -g  CMakeFiles/DebuggingExample.dir/main.c.obj -o DebuggingExample.exe -Wl,--out-implib,libDebuggingExample.dll.a -Wl,--major-image-version,0,--minor-image-version,0  -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
  C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/DebuggingExample.dir/main.c.obj: in function `main':
  C:/DebuggingExample/main.c:6: undefined reference to `test'
  collect2.exe: error: ld returned 1 exit status
  ninja: build stopped: subcommand failed.
width="85%" height="85%"
Build and rebuild project in Visual Studio
Build and rebuild project in CLion normal UI way
Build and rebuild project in CLion new UI way