У меня есть пример каталога некоторых программ, который содержит несколько файлов с несколькими main функции. Могу ли я собрать все эти файлы в один проект, скомпилировать их, а затем запустить конкретные, не получая main already defined ошибка? Предположим, я не хочу создавать отдельный проект для каждого файла cpp.
ОБНОВИТЬ
Мне нужно простое решение в один-два клика (если оно существует). Я не хочу распределять файлы по папкам или редактировать содержимое файлов. Например, в Eclipse / Java вы можете щелкнуть правой кнопкой мыши любой файл с помощью main и запустить его. И в одном проекте может быть много основных файлов. Возможно ли это для VisualStudio / CPP?
ОБНОВЛЕНИЕ 2
Я знаю, что C ++ — это не Java, а Visual Studio — это не Eclipse. Мой вопрос об автоматизации некоторых ручных операций.
Решение
Я не работал с OpenCV, но он использует cmake и имеет CMakeLists.txt в каталоге с примерами. Есть некоторые обсуждения о создании примеров с использованием cmake Вот .
КАК СОЗДАТЬ НЕСКОЛЬКО ПРОЕКТОВ В ОДНОМ РЕШЕНИИ VISUAL STUDIO !? 😱
Cmake ничего не собирает сам, он генерирует сценарии сборки для целевой платформы и должен иметь возможность создавать файлы решений и проектов, которые можно загружать в Visual Studio.
Другие решения
Положить те main функции в отдельных пространствах имен, а затем определить, какой из них вы хотите запустить, например.
File1.cpp namespace F1 < int main(int argc, char * argv[]) < // . >> The-real-main.cpp int main(int argc, char * argv[])
редактировать: В ответ на дополнительную информацию.
C ++ — это не Java, а VS — это не Eclipse :). Естественный способ поддерживать несколько программ одновременно в VS — это поместить несколько проектов (по одному для каждого исполняемого файла или библиотеки) в одно решение. Если вы хотите запустить проект, просто щелкните его правой кнопкой мыши в Solution Explorer , Выбрать Set as Startup Project , а затем нажмите Start кнопку, чтобы запустить его.
Чтобы добавить проект в решение, щелкните правой кнопкой мыши решение и выберите Add | New project. или же Add | Existing project ,
В Visual studio:
Создайте одно «Решение» — под решением можно создать несколько «проектов». Каждый проект будет компилироваться отдельно в исполняемый файл. Компиляция выполняется как обычно, за исключением «разгрузки» ненужных проектов. Чтобы снова открыть один из других проектов, просто выберите «перезагрузить проект» в обозревателе решений.
Эта функция полезна в учебных / организационных целях, когда один группирует исходные файлы в общую «папку» для легкого поиска и доступа, при этом все еще компилируя / отлаживая отдельно. Основное преимущество, которое я могу сказать, заключается в том, что можно легко перемещаться по проектам с помощью обозревателя решений.
Возможно, самым простым решением является использование нескольких конфигураций сборки. Просто создайте несколько конфигураций сборки, определите точку входа для каждой из них.
В Visual Studio вы должны создать один проект на исполняемый файл, который вы хотите создать.
НЕСКОЛЬКО ПРОЕКТОВ В ОДНОМ РЕШЕНИИ | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | Урок # 10
Если требуется построить только один файл, вы можете использовать опцию «Исключить файлы из сборки» в Свойствах, чтобы исключить остальные. Выберите несколько исходных файлов и исключите их одновременно. Очевидно, что это решение не работает, если вы обращаетесь к функциям / символам в файлах.
Источник: web-answers.ru
Практическое руководство. Создание многопроектных шаблонов
Область применения:Visual Studio
Visual Studio для Mac
Visual Studio Code
Многопроектные шаблоны используются в качестве контейнера для двух или нескольких проектов. При создании проекта на основе многопроектного шаблона каждый проект в шаблоне добавляется в решение.
Многопроектный шаблон содержит два или несколько шаблонов проектов с корневым шаблоном типа ProjectGroup.
Многопроектные шаблоны ведут себя иначе, чем шаблоны для одного проекта. Они имеют следующие уникальные характеристики:
- Отдельным проектам в многопроектном шаблоне невозможно назначить имена, если этот шаблон используется для создания проекта. Вместо этого нужно использовать атрибут ProjectName элемента ProjectTemplateLink в файле VSTEMPLATE, чтобы указать имя для каждого проекта.
- Многопроектные шаблоны могут содержать проекты для разных языков, но сам шаблон можно поместить только в одну категорию. Категория шаблона указывается в элементе ProjectType файла VSTEMPLATE.
Многопроектный шаблон должен включать следующие элементы, сжатые в ZIP-файл:
- Корневой файл VSTEMPLATE для всего многопроектного шаблона. Этот корневой файл VSTEMPLATE содержит метаданные, отображаемые в диалоговом окне создания проекта. Он также указывает место поиска файлов VSTEMPLATE для проектов в этом шаблоне. Этот файл должен находиться в корне ZIP-файла.
- Две или более папок, содержащих файлы, которые нужны для завершения шаблона проекта. К ним относятся все файлы кода для проекта, а также файл VSTEMPLATE.
Например, ZIP-файл многопроектного шаблона с двумя проектами может иметь следующие файлы и каталоги:
- MultiProjectTemplate.vstemplate
- Project1MyTemplate.vstemplate
- Project1Project1.vbproj
- Project1Class.vb
- Project2MyTemplate.vstemplate
- Project2Project2.vbproj
- Project2Class.vb
Корневой файл VSTEMPLATE многопроектного шаблона отличается от однопроектного шаблона следующим образом:
-
Атрибут Тип элемента VSTemplate имеет значение ProjectGroup вместо Project. Пример:
Project1MyTemplate.vstemplate Project2MyTemplate.vstemplate
Если вам нужно, чтобы в диалоговом окне создания проекта отображался только многопроектный шаблон, а не его отдельные проекты, пометьте внутренние шаблоны как скрытые. Пример:
. true .
Создание многопроектного шаблона из существующего решения
- Создайте решения и добавьте два или более проектов.
- Настройте проекты для экспорта в шаблон.
Совет Если вы используете параметры шаблона и хотите ссылаться на переменные из родительского шаблона, укажите перед именем параметра префикс ext_ . Например, $ext_safeprojectname$ . Кроме того, задайте атрибуту CopyParameters элемента ProjectTemplateLink значение true.
Примечание Каждый проект необходимо отдельно экспортировать в шаблон, поэтому повторите предыдущие шаги для каждого проекта в решении.
Пример для двух проектов
В этом примере показан простой корневой файл VSTEMPLATE, включающий несколько проектов. В этом примере шаблон содержит два проекта: Мое приложение Windows и Моя библиотека классов. Атрибут ProjectName элемента ProjectTemplateLink задает имя, которое назначено проекту.
Если атрибут ProjectName не указан, в качестве имени проекта используется имя файла VSTEMPLATE.
Multi-Project Template Sample An example of a multi-project template Icon.ico VisualBasic WindowsAppMyTemplate.vstemplate ClassLibMyTemplate.vstemplate
Пример с папками решений
В этом примере используется элемент SolutionFolder для разделения проектов на две группы, Math Classes и Graphics Classes. Шаблон содержит четыре проекта, два из которых размещаются в отдельных папках решения.
Multi-Project Template Sample An example of a multi-project template Icon.ico VisualBasic MathClassLib1MyTemplate.vstemplate MathClassLib2MyTemplate.vstemplate GraphicsClassLib1MyTemplate.vstemplate GraphicsClassLib2MyTemplate.vstemplate
См. также
- Создание шаблонов проектов и элементов
- Практическое руководство. создание шаблонов проектов
- Справочник по схемам шаблонов Visual Studio (расширяемость)
- Элемент SolutionFolder (шаблоны Visual Studio)
- Элемент ProjectTemplateLink (шаблоны Visual Studio)
Источник: learn.microsoft.com
Вопрос по Visual Studio C#. Как в одном решении делать несколько «проектов»?
В методичке задание сделать АТД «Дек». Под это задание выделяется несколько лабораторных работ. Во второй лабе надо сделать сам дек. К нему сделать тесты. В третьей лабе в этом деке реализовать интерфейсы IEnumerable и IClonable. К новым методам сделать тесты и т.д.
У меня в Visual Studio в решении есть консольное приложение с классом дека и библиотека классов с тестами к классу дек. (Lab2 и Lab2_Test на скрине). Я хочу 3 лабу сделать в этом же решении, НО доделав сам дек уже в другом консольном приложении и тесты к классу. Т.е. Заходишь в проект Lab2 и там видишь первоначальный класс дек и класс Program, в котором используется класс дек.
Заходишь в Lab_Test, а там тесты к классу дек из проекта Lab2. Заходишь в Lab3 а там тот же самый дек, только с реализованными интерфейсами. Заходишь в Lab3_Test, а там те же самые тесты + тесты для методов, реализующих наследуемые интерфейсыю Я так и сделал, НО: В обозревателе тестов количество тестов удвоилось. Там тесты из Lab2_Test и из Lab3_Test.
Я хочу, чтобы в обозревателе тестов выполнялись тесты того проекта, который выделен (в обозревателе решений). Когда я компилирую, то запускается консольное приложение из Lab2. Я хочу, чтобы компилировался тот проект, который выделен (в обозревателе решений). Такое в Visual Studio вообще можно сделать (без git)? Если можно, то как?
Отслеживать
задан 6 янв 2018 в 12:10
419 1 1 золотой знак 8 8 серебряных знаков 19 19 бронзовых знаков
Ну сделайте две группы тестов, и запускайте нужную. Делов-то!
6 янв 2018 в 15:53
Я хочу, чтобы в тестах 3 лабы были тесты из второй лабы (соответственно названия у них будут идентичны) и тесты, которые я допишу. И эти тесты тестировали класс в Lab3. Я так и сделал. НО при запуске тестов запускаются и отображаются тесты из Lab2_Test и Lab3_Test. Это забивает панель.
Я хочу видеть тесты только из 3 лабы.
Источник: ru.stackoverflow.com