Создание проекта makefile на C++
Makefile — это текстовый файл, содержащий инструкции по компиляции и связыванию (или сборке) набора файлов исходного кода. Программа (часто называемая программой make) считывает файл makefile и вызывает компилятор, компоновщик и, возможно, другие программы для создания исполняемого файла. Программа Майкрософт называется NMAKE.
Если у вас есть существующий проект makefile, у вас есть следующие варианты, если вы хотите изменить, выполнить сборку и отладку в интегрированной среде разработки Visual Studio:
- Создайте в Visual Studio проект makefile, который использует существующий файл makefile для настройки файла VCXPROJ, используемого средой Visual Studio для IntelliSense. (У вас нет всех функций интегрированной среды разработки, которые вы получаете с помощью собственного проекта MSBuild.) См. статью «Создание проекта makefile» ниже.
- Используйте мастер создания нового проекта из существующих файлов кода, чтобы создать собственный проект MSBuild из исходного кода. Исходный файл makefile больше не будет использоваться. Дополнительные сведения см. в разделе Практическое руководство. Создание проекта C++ из существующего кода.
- Visual Studio 2017 и более поздних версий: используйте функцию «Открыть папку« для редактирования и создания проекта makefile как есть без участия в системе MSBuild. Дополнительные сведения см. в статье Проекты «Открыть папку» для C++.
- Visual Studio 2019 и более поздних версий: создайте проект makefile UNIX для Linux.
Создание проекта makefile с использованием шаблона проекта makefile
В Visual Studio 2017 и более поздних версиях шаблон проекта Makefile доступен, если установлена рабочая нагрузка разработки классических приложений на C++.
Используйте мастер, чтобы указать команды и среду, используемые файлом makefile. Затем этот проект можно использовать для сборки кода в Visual Studio.
По умолчанию проект makefile не отображает в обозревателе решений никаких файлов. Проект makefile задает параметры сборки, которые показаны на странице свойств проекта.
Выходной файл, указанный в проекте, не влияет на имя, которое создает скрипт сборки. Он объявляет только намерение. Файл makefile по-прежнему управляет процессом сборки и указывает ее целевые объекты.
Создание проекта makefile в Visual Studio
- В главном меню Visual Studio выберите Файл>Создать>Проект и в поле поиска введите «makefile». Если вы видите несколько шаблонов проекта, выберите варианты в зависимости от целевой платформы.
- Только Windows: на странице «Конфигурация отладки проекта Makefile» Параметры укажите команду, выходные данные, очистку и перестроение для отладочных и розничных сборок. Нажмите кнопку «Далее», если вы хотите указать различные параметры конфигурации выпуска.
- Нажмите кнопку «Готово«, чтобы закрыть диалоговое окно и открыть только что созданный проект в Обозреватель решений.
Создание проекта makefile в Visual Studio 2015 или Visual Studio 2017
- На начальной странице Visual Studio введите строку «makefile» в поле поиска Новый проект. Или же откройте диалоговое окно Новый проект, разверните узел Visual C++>Общие (Visual Studio 2015) или Прочие (Visual Studio 2017) и в области шаблонов выберите Проект Makefile, чтобы открыть мастер проектов.
- На странице Параметры приложения предоставьте сведения о команде, выводе, удалении и перестроении для отладочной и окончательной сборок.
- Нажмите кнопку «Готово«, чтобы закрыть мастер и открыть созданный проект в Обозреватель решений.
На этой странице свойств можно просматривать и изменять свойства проекта. Дополнительные сведения о отображении страницы свойств см. в разделе «Задание компилятора C++» и свойств сборки в Visual Studio.
Мастер проекта makefile
Создав проект makefile, вы можете просматривать и изменять каждый из следующих параметров на странице Nmake свойств проекта.
- Командная строка сборки: указывает командную строку, выполняемую при выборе пользователем команды «Сборка» в меню «Сборка». Отображается в поле «Командная строка для сборки» на странице «Nmake» свойств проекта.
- Выходные данные: указывает имя файла, содержащего выходные данные для командной строки. По умолчанию этот параметр основан на имени проекта. Отображается в поле «Вывод» на странице «Nmake» свойств проекта.
- Очистка команд. Указывает командную строку, выполняемую при нажатии пользователем кнопки «Очистить» в меню «Сборка». Отображается в поле «Командная строка для очистки» на странице «Nmake» свойств проекта.
- Перестроение командной строки: указывает командную строку, выполняемую при выборе пользователем команды «Перестроить» в меню «Сборка». Отображается в поле «Командная строка для перестроения всех файлов» на странице «Nmake» свойств проекта.
Практическое руководство. Использование IntelliSense для проекта Makefile
IntelliSense не работает в проектах makefile, если определенные параметры проекта или компилятора заданы неправильно. Чтобы настроить проекты makefile для правильной работы IntelliSense, выполните указанные ниже действия.
- Откройте диалоговое окно Страницы свойств. Подробнее см. в статье Настройка компилятора C++ и свойств сборки в Visual Studio.
- Выберите страницу свойств>конфигурации NMake.
- Измените свойства в IntelliSense соответствующим образом:
- Задайте свойство Определения препроцессора, чтобы определить символы препроцессора в проекте makefile. Дополнительные сведения см. в разделе /D (Определения препроцессора).
- Задайте свойство Путь поиска включаемых файлов, чтобы указать список каталогов, где компилятор будет производить поиск для разрешения ссылок на файлы, передаваемых в директивы препроцессора в новом проекте makefile. Дополнительные сведения см. в разделе /I (Дополнительные каталоги включения).
- Для проектов, созданных с использованием CL.EXE из командного окна, задайте переменную среды INCLUDE, чтобы указать каталоги, где компилятор будет производить поиск для разрешения ссылок на файлы, передаваемых в директивы препроцессора в новом проекте makefile.
- Задайте свойство Принудительно включаемые файлы, чтобы указать файлы заголовков, обрабатываемые при сборке проекта makefile. Дополнительные сведения см. в разделе /FI (Имя принудительного включения файла).
- Задайте свойство Путь поиска сборок, чтобы указать список каталогов, где компилятор будет производить поиск для разрешения ссылок на сборки .NET в проекте. Дополнительные сведения см. в разделе /AI (Указание каталогов метаданных).
- Задайте свойство Обязательно используемые сборки, чтобы указать, какие сборки .NET обрабатываются при сборке проекта makefile. Дополнительные сведения см. в разделе /FU (Имя принудительного #using файла).
- Задайте свойство «Дополнительные параметры», чтобы указать другие параметры компилятора, которые будут использоваться IntelliSense при анализе файлов C++.
- Нажмите кнопку ОК, чтобы закрыть окно страниц свойств.
- Используйте команду Сохранить все, чтобы сохранить измененные параметры проекта.
При следующем открытии проекта makefile в среде разработки Visual Studio запустите команду Очистить решение, а затем — команду Собрать решение для проекта makefile. Технология IntelliSense должна работать в интегрированной среде разработки правильно.
Visual Studio добавить файл
Из проекта видно 1-й, а мне нужен, естественно, 2-й. Можно его как-то подключить в проект, чтобы он тоже был виден?
Отслеживать
задан 20 сен 2022 в 9:27
188 8 8 бронзовых знаков
или задавать полный путь для файла float.h или в проект STLport записывать пути по-короче. И тогда инклуды будут такими : «STLport/float.h» , «float.h» (VC/include/)
20 сен 2022 в 9:49
В проекте не должно быть двух стандартных библиотек, удаляйте STLport (зачем он вообще нужен в VS?) ну или отказывайтесь от стандартной библиотеки VS.
20 сен 2022 в 10:13
Указывая полное имя файла, например. Только вы уверены, что они между собой не будут ссориться. Вернее, их содержимое?
20 сен 2022 в 11:23
@Harry Указать имя напрямую не получается, т.к. #include
20 сен 2022 в 12:02
«Пожалуйста, не спрашивайте почему.» — ну уж нет, если уж вы собираетесь загонять осу под шкаф, то извольте подробно расписать, зачем это понадобилась, так как с большой долей вероятности нет никакой необходимости это делать.
Системы сборки и проекты C/C++ в Visual Studio
Visual Studio можно использовать для изменения, компиляции и сборки любой базы кода C++ с полной поддержкой IntelliSense без преобразования этого кода в проект Visual Studio или компиляции с помощью набора инструментов MSVC. Например, можно изменить кроссплатформенный проект CMake в Visual Studio на компьютере Windows, а затем скомпилировать его для Linux с помощью g++ на удаленном компьютере Linux.
Компиляция C++
Сборка программы C++ — это компиляция исходного кода из одного или нескольких файлов и последующее связывание этих файлов в исполняемый файл (EXE), библиотеку динамической загрузки (DLL) или статическую библиотеку (LIB).
Процесс базовой компиляции C++ состоит из трех основных этапов.
- Препроцессор C++ преобразует все определения #директив и макросов в каждом исходном файле. При этом создается единица трансляции.
- Компилятор C++ компилирует каждую единицу трансляции в объектные файлы (OBJ), применяя заданные параметры компилятора.
- Компоновщик объединяет объектные файлы в один исполняемый файл, применяя заданные параметры компоновщика.
Набор инструментов MSVC
В набор инструментов компилятора MSVC (также называемого цепочкой инструментов или средствами сборки) входят компилятор, компоновщик, стандартные библиотеки и связанные служебные программы Microsoft C++. Они включены в состав в Visual Studio. Вы также можете скачать и использовать набор инструментов командной строки в качестве бесплатного автономного пакета. Дополнительные сведения см. в разделе «Средства сборки для Visual Studio» на странице «Загрузки Visual Studio «.
Вы можете создавать простые программы, вызывая компилятор MSVC (cl.exe) непосредственно из командной строки. Следующая команда принимает один файл исходного кода и вызывает cl.exe для создания исполняемого файла с именем hello.exe:
cl /EHsc hello.cpp
Здесь компилятор (cl.exe) автоматически вызывает препроцессор и компоновщик C++ для создания окончательного выходного файла. Дополнительные сведения см. в статье Сборка из командной строки.
Системы сборки и проекты
Большинство реальных программ используют некую систему сборки для управления сложностями компиляции нескольких исходных файлов для нескольких конфигураций (для отладки и выпуска), нескольких платформ (x86, x64, ARM и т. д.), настраиваемых шагов сборки и даже нескольких исполняемых файлов, которые должны быть скомпилированы в определенном порядке. Вы выполняете настройки в файле конфигурации сборки, а система сборки принимает этот файл в качестве входных данных перед вызовом компилятора. Набор файлов исходного кода и файлов конфигурации сборки, необходимых для создания исполняемого файла, называется проектом.
Далее приведены различные варианты для проектов Visual Studio — C++.
- Создайте проект Visual Studio с помощью интегрированной среды разработки Visual Studio и настройте его, используя страницы свойств. Проекты Visual Studio создают программы, работающие в Windows. Общие сведения см. в статье Компиляция и сборка в документации по Visual Studio.
- Откройте папку, содержащую файл CMakeLists.txt. Поддержка CMake интегрирована в Visual Studio. Интегрированную среду разработки можно использовать для редактирования, тестирования и отладки без изменения файлов CMake. При этом вы можете работать в том же проекте CMake, что и другие пользователи, которые могут использовать другие редакторы. Поэтому CMake является рекомендуемым вариантом для кроссплатформенной разработки. Дополнительные сведения см. в статье Проекты CMake.
- Откройте свободную папку исходных файлов, где нет файла проекта. Для создания файлов в Visual Studio будет использоваться эвристика. Это простой способ компиляции и запуска небольших консольных приложений. Дополнительные сведения см. в статье Проекты «Открыть папку» для C++.
- Откройте папку, содержащую файл makefile или любой другой файл конфигурации системы сборки. Вы можете настроить Visual Studio для вызова любых произвольных команд сборки, добавив файлы JSON в папку. Дополнительные сведения см. в статье Проекты «Открыть папку» для C++.
- Откройте файл makefile Windows в Visual Studio. Дополнительные сведения см. в разделе Справочник по программе NMAKE.
Использование MSBuild из командной строки
Вы можете вызвать систему MSBuild из командной строки, передав ей VCXPROJ-файл вместе с параметрами командной строки. Для реализации этого подхода требуется хорошее понимание MSBuild, а использовать его рекомендуется только в случае необходимости. Дополнительные сведения см. в разделе MSBuild.
В этом разделе
Проекты Visual Studio
Создание, настройка и сборка проектов C++ в Visual Studio с помощью собственной системы сборки (MSBuild).
Проекты CMake
Создание, сборка и развертывание проектов CMake в Visual Studio.
Проекты в виде папок
Создание, сборка и развертывание проектов C++ в Visual Studio с помощью любой произвольной системы сборки или без нее.
Сборки выпуска
Создание и устранение неполадок оптимизированных сборок выпуска для развертывания в системах конечных пользователей.
Использование набора инструментов MSVC из командной строки
Описание использования компилятора C/C++ и средств сборки непосредственно из командной строки, а не с помощью интегрированной среды разработки Visual Studio.
Создание библиотек DLL в Visual Studio
Создание, отладка и развертывание библиотек DLL (общих библиотек) C/C++ в Visual Studio.
Создание изолированных приложений и параллельных сборок C/C++
Описывает модель развертывания для классических приложений Windows, основанную на концепции изолированных приложений и параллельных сборок.
Настройка проектов C++ для 64-разрядных целевых объектов с архитектурой x64
Нацеливание на 64-разрядное оборудование с архитектурой x64 с использованием средств сборки MSVC.
Настройка проектов C++ для процессоров ARM
Нацеливание на оборудование ARM с использованием средств сборки MSVC.
Оптимизация кода
Оптимизация кода различными способами, включая программную оптимизацию.
Настройка программ для Windows XP
Нацеливание на Windows XP с использованием средств сборки MSVC.
Справочные сведения о сборке C/C++
Содержит ссылки на справочные статьи о сборке программ на C++, о параметрах компилятора и компоновщика, а также о различных средствах сборки.
Пошаговое руководство. Работа с проектами и решениями (C++)
В этой статье описано, как создать проект C++ в Visual Studio, добавить код, а затем выполнить сборку и запуск проекта. Проект в этом пошаговом руководстве представляет собой программу, которая отслеживает количество игроков в различных карточных играх.
В Visual Studio для организации работы служат проекты и решения. Решение может содержать несколько проектов, например библиотеку DLL и ссылающийся на нее исполняемый файл. Дополнительные сведения см. в статье Solutions and Projects (Решения и проекты).
Перед началом работы
Для выполнения данного пошагового руководства требуется Visual Studio 2017 или более поздней версии. Если вам нужна копия, вот краткое руководство: Установка поддержки С++ в Visual Studio. Если вы еще не сделали этого, выполните приведенные ниже шаги после установки в рамках руководства «Hello, World», чтобы убедиться в правильности установки и работы компонентов C++.
Полезно владеть основами языка C++ и понимать назначение компилятора, компоновщика и отладчика. В руководстве также предполагается, что вы знакомы с Windows и умеете использовать меню и диалоговые окна.
Создание проекта
Чтобы создать проект, сначала выберите шаблон типа проекта. Для каждого типа проекта среда Visual Studio задает параметры компилятора и — в зависимости от типа — создает начальный код, который позже можно изменить. Следующие действия зависят от используемой версии Visual Studio. Чтобы ознакомиться с документацией по предпочтительной версии Visual Studio, используйте селектор Версия. Он находится в верхней части оглавления на этой странице.
Создание проекта в Visual Studio
- В главном меню выберите Файл >Создать >Проект, чтобы открыть диалоговое окно Создание проекта.
- В верхней части диалогового окна задайте для параметра Язык значение C++, для параметра Платформа значение Windows, а для Типа проекта — Консоль.
- В отфильтрованном списке типов проектов щелкните Консольное приложение, а затем нажмите кнопку Далее. На следующей странице введите имя проекта Игра. Вы можете принять расположение по умолчанию в раскрывающемся списке Расположение, ввести другое расположение или нажать кнопку Обзор, чтобы перейти к каталогу, в котором требуется сохранить проект. При создании проекта среда Visual Studio помещает его в решение. По умолчанию имя решения совпадает с именем проекта. Можно изменить имя в поле Имя решения, но для этого примера оставьте имя по умолчанию.
- Нажмите кнопку Создать, чтобы создать проект. Visual Studio создает решение и файлы проекта и открывает редактор для созданного файла исходного кода Game.cpp.
Создание проекта в Visual Studio 2017
- В строке меню выберите Файл>Создать>Проект.
- В левой области диалогового она Новый проект разверните узел Установленные и выберите Visual C++ , если он еще не открыт.
- В списке установленных шаблонов в центральной области выберите Консольное приложение.
- В поле Имя введите имя проекта. Для этого примера введите Game (Игра). Вы можете принять расположение по умолчанию в раскрывающемся списке Расположение, ввести другое расположение или нажать кнопку Обзор, чтобы перейти к каталогу, в котором требуется сохранить проект. При создании проекта среда Visual Studio помещает его в решение. По умолчанию имя решения совпадает с именем проекта. Можно изменить имя в поле Имя решения, но для этого примера оставьте имя по умолчанию.
- Нажмите кнопку ОК, чтобы создать проект. Visual Studio создает решение и файлы проекта и открывает редактор для созданного файла исходного кода Game.cpp.
Создание проекта в Visual Studio 2015
- В строке меню выберите Файл>Создать>Проект.
- В левой области диалогового она Новый проект разверните узел Установленные и выберите Visual C++ , если он еще не открыт.
- В списке установленных шаблонов в центральной области выберите шаблон Консольное приложение Win32.
- В поле Имя введите имя проекта. Для этого примера введите Game (Игра). Вы можете принять расположение по умолчанию в раскрывающемся списке Расположение, ввести другое расположение или нажать кнопку Обзор, чтобы перейти к каталогу, в котором требуется сохранить проект. При создании проекта среда Visual Studio помещает его в решение. По умолчанию имя решения совпадает с именем проекта. Можно изменить имя в поле Имя решения, но для этого примера оставьте имя по умолчанию.
- Нажмите кнопку ОК, чтобы закрыть диалоговое окно Новый проект, и запустите мастер приложений Win32.
- В мастере нажмите кнопку Далее . На странице Параметры приложения в разделе Дополнительные параметрыснимите флажок Предкомпилированный заголовок .
- Нажмите кнопку Готово , чтобы создать проект. Visual Studio создает решение и файлы проекта и открывает редактор для созданного файла исходного кода Game.cpp.
Упорядочение файлов и проектов
Для организации проектов, файлов и других ресурсов в решении, а также для управления ими можно использовать обозреватель решений.
В этой части пошагового руководства описывается добавление класса в проект. При добавлении класса Visual Studio добавляет соответствующие H- и CPP-файлы. Результаты отображаются в обозревателе решений.
Добавление класса в проект
- Если окно Обозреватель решений не отображается в Visual Studio, выберите в строке меню Вид>Обозреватель решений.
- Выберите проект Game в обозревателе решений. В строке меню выберите Проект>Добавить класс.
- В диалоговом окне Добавление класса в поле Имя класса введите значение Cardgame. Не изменяйте имена файлов и параметры по умолчанию. Нажмите кнопку ОК . Visual Studio создает файлы и добавляет их в проект. Вы можете просмотреть их в обозревателе решений. Visual Studio откроет файлы Cardgame.h и Cardgame.cpp в редакторе.
- Внесите в файл Cardgame.h следующие изменения.
- После открывающей скобки определения класса добавьте два частных элемента данных.
int players; static int totalParticipants;
После изменения файл Cardgame.h должен выглядеть примерно так:
#pragma once class Cardgame < int players; static int totalParticipants; public: Cardgame(int players); ~Cardgame(); static int GetParticipants() < return totalParticipants; >>;
Строка #pragma once указывает компилятору включить файл заголовка только один раз. Для получения дополнительной информации см. once . Сведения о других ключевых словах C++ в файле заголовка см. в разделе class , int , static и public .
#include "Cardgame.h" #include using namespace std; int Cardgame::totalParticipants = 0; Cardgame::Cardgame(int players) : players(players) < totalParticipants += players; cout Cardgame::~Cardgame()
Примечание При вводе кода можно использовать автозавершение. Например, при вводе кода с клавиатуры можно ввести pl или tot и нажать клавиши Ctrl+Пробел. Функция автозавершения автоматически вводит players или totalParticipants .
Добавление тестового кода в функцию main
Добавьте в приложение код, тестирующий новые функции.
Добавление тестового кода в проект
- В окне редактора Game.cpp замените существующий код следующим:
// Game.cpp : Defines the entry point for the console application. // #include "Cardgame.h" #include using namespace std; void PlayGames() < Cardgame bridge(4); Cardgame blackjack(8); Cardgame solitaire(1); Cardgame poker(5); >int main()
Сборка и запуск проекта приложения
Затем выполните сборку проекта и запустите приложение.
Построение и запуск проекта
- В строке меню последовательно выберите Сборка>Собрать решение. Выходные данные сборки выводятся в окне Вывод. Если сборка пройдет успешно, выходные данные должны выглядеть следующим образом:
1>------ Build started: Project: Game, Configuration: Debug Win32 ------ 1>pch.cpp 1>Cardgame.cpp 1>Game.cpp 1>Generating Code. 1>Game.vcxproj -> C:\Users\\source\repos\Game\Debug\Game.exe ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
4 players have started a new game. There are now 4 players in total. 8 players have started a new game. There are now 12 players in total. 1 players have started a new game. There are now 13 players in total. 5 players have started a new game. There are now 18 players in total.
Вы успешно выполнили сборку проекта приложения и решения. Продолжайте выполнять пошаговое руководство, чтобы получить дополнительные сведения о сборке проектов кода C++ в Visual Studio.