Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
3 / 3 / 1
Регистрация: 20.03.2019
Сообщений: 150

Как указать все .cpp файлы при компиляции программой cl.exe?

20.05.2020, 17:45. Показов 2427. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Допустим есть папка src и в ней все .cpp файлы. Как их можно объединить при компиляции в msvs cmd?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.05.2020, 17:45
Ответы с готовыми решениями:

Как склеить все файлы при компиляции (релиз)?
После того как скомпилировал проект в режиме релиза увидел вот такую картину. Как можно склеить все это в 1 файл?

Файлы CPP, HPP как получить файл exe
Как все это сделать на DEV-C++?

Зачем нужны файлы, что появляются при компиляции exe
Доброго времени суток! Когда в свойствах компиляции стоит Debug - программа сохраняется в папку Bin\Debug\ Туда попадает .exe файл и...

10
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
20.05.2020, 18:01
Цитата Сообщение от Zumhad Посмотреть сообщение
папка src и в ней все .cpp файлы
https://stackoverflow.com/ques... ual-studio
0
3 / 3 / 1
Регистрация: 20.03.2019
Сообщений: 150
20.05.2020, 19:54  [ТС]
hoggy, чувство будто вы не читали мой вопрос. Я написал что компилирую в cmd. И мне нужно передавать все в аргументы cl.exe
0
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
20.05.2020, 19:58
Zumhad, через пробел наверное, это самый логичный вариант. Может быть можно *.cpp. Читайте руководство по компиляции.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
20.05.2020, 20:35
Цитата Сообщение от Zumhad Посмотреть сообщение
чувство будто вы не читали мой вопрос.
чувство, что ты не читал ссылку, которую я тебе дал.

ты хочешь компилировать руками:
Цитата Сообщение от Zumhad Посмотреть сообщение
msvs
(правильно писать msvc, если речь о проектах с++)

для этого у тебя должен быть на руках проект Visual Studio.
проект Visual Studio для с++ - это на самом деле сценарий сборки MSBuild.

MSBuild - система сборки.
умеет собирать любую фигню (не только проекты с++)
управляется при помощи скриптов написанных на особом xml-подобном языке.

но конкретно Visual Studio Solution для c++ - это не абы какой сценарий MSBuild,
а записанный по особым правилам.

можно отойти от этих правил, и тогда MSBuild все равно всё прекрасно сможет собрать.
но вот в самой IDE визуальное отображение проекта может порушиться.

по ссылке, которую я тебе дал,
есть примеры, как подтягивать все файлы по маске.

например, в xml проекта в секции, где описываются исходники:
Code
1
2
3
  <ItemGroup>
    <ClCompile Include="config.cpp" />
    ...
что бы не указывать каждый файлик отдельно руками,
можно указать маску и подтянуть сразу весь каталог (или каталоги):
Code
1
2
3
  <ItemGroup>
    <ClCompile Include="*.cpp" />
    ...
но строго говоря, несмотря на то, что MSBuild нормально это воспримет,
так делать нельзя.

потому что по правилам самой IDE,
файлы нужно указывать каждый по отдельности.
если тебя не напрягает, что IDE может забуксовать - дерзай.

самый нормальный человеческий способ - добавить каталоги с файлами из IDE.

Цитата Сообщение от Zumhad Посмотреть сообщение
компилирую в cmd
и уже лишь имея на руках файл проекта,
можно его скомпилировать из командной строки.

Цитата Сообщение от Zumhad Посмотреть сообщение
нужно передавать все в аргументы cl.exe
это - путь извращенца.

никто в современном мире так не делает.
к тому же, есть нюансы, которые отнюдь не для новичка.
но не зная о них, ты все равно не сможешь сделать это качественно.

создай человеческий проект студии и запусти MSBuild:
Code
1
msbuild.exe "sample.sln" "/t:game:rebuild" "/p:Configuration=Release" "/p:Platform=Win32"
есть ещё более простой способ:
сборка проекта из командной строки руками самой студии:
Компиляция с использованием батника


ps:
и открой для себя cmake
1
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
20.05.2020, 20:40
Лучший ответ Сообщение было отмечено Zumhad как решение

Решение

Цитата Сообщение от Zumhad Посмотреть сообщение
Допустим есть папка src и в ней все .cpp файлы. Как их можно объединить при компиляции в msvs cmd?
cd src
cl *.cpp

Но может быть сложнее, если нужны дополнительные зависимости, включаемые файлы, ресурсы и т.д.
1
20.05.2020, 21:09

Не по теме:

Цитата Сообщение от hoggy Посмотреть сообщение
(правильно писать msvc, если речь о проектах с++)
Он написал
Цитата Сообщение от Zumhad Посмотреть сообщение
msvs cmd
так что правильно Visual Studio 2019 Developer Command Prompt, и сокращение msvs cmd подходит больше.
Оная настроена в том числе на то, чтобы из командной строки собирать.
Как gcc, только cl и ключики другие. )))

0
3 / 3 / 1
Регистрация: 20.03.2019
Сообщений: 150
20.05.2020, 21:58  [ТС]
hoggy, понимаешь у меня будет в приложении кнопка создать. И в этот момент нужно дать клиенту просто готовый экзешник. Поэтому я все делаю в cmd
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
20.05.2020, 22:42
Цитата Сообщение от Zumhad Посмотреть сообщение
понимаешь у меня будет в приложении кнопка создать.
правильные кнопки запускают devenv для сборки проекта из командной строки.
или запускают MSBuild, если нужны какие то кастомные плюшки.
или запускают cmake, если нужна кросс-платформа.
или ещё какую нибудь систему сборки.

но правильные кнопки никогда не запускают CL.exe

потому что правильные кнопки пишут правильные программисты,
которые сквозь призму своего правильного опыта осознают:

реальные проекты - они не просто состоят из множества файлов.
они состоят из множества целей сборки.
которые по разному друг от друга зависят,
должны собираться в определенной последовательности.
и в довесок могут подтягивать разные внешние зависимости:
внешние библиотеки, например.

попытка построить систему,
которая сможет разрулить все необходимые этапы сборки приведет к тому,
что ты изобретешь очередной MSBuild или cmake.

ну так вот: не надо тратить время на изобретение очередного велосипеда с квадратными колесами.
пользуйся готовыми проф. инструментами.

если тебе нужно генерировать сборочные проекты прямо на лету,
тогда cmake - то, что доктор прописал.
0
3 / 3 / 1
Регистрация: 20.03.2019
Сообщений: 150
21.05.2020, 09:41  [ТС]
hoggy, у меня будут только сгенерированные cpp файлы. Поэтому мне не нужен проект. Все зависимости я могу сделать сам. Поэтому я обращаюсь к компоновщику напрямую. А уже готовые программы не дают мне полной свободы действий.
0
59 / 49 / 14
Регистрация: 23.02.2016
Сообщений: 433
21.05.2020, 11:03
Zumhad, раздел Следующие шаги https://docs.microsoft.com/ru-... ew=vs-2019

Чтобы скомпилировать программу с дополнительными файлами исходного кода, введите их все в командной строке, например:

cl /EHsc file1.cpp file2.cpp file3.cpp

Параметр командной строки /EHsc указывает компилятору на необходимость стандартной обработки исключений C++. В противном случае созданные исключения могут привести к неуничтоженным объектам и утечкам ресурсов. Дополнительные сведения см. в статье /EH (модель обработки исключений).
Кстати sc в Excaption Handling лично я не понял как расшифровывается.

hoggy,
Цитата Сообщение от hoggy Посмотреть сообщение
это - путь извращенца
а что скажите на тестовые задания для джуна, где прямо в самой таске прописано, что передача аргументов через командную строку ? Лично такое делал в ноябре https://github.com/bystrobank/opencv-test-app и чует моё сердце таких заданий уйма

Добавлено через 27 минут

Не по теме:

Вообще ребята с майкрософта в плане встроенного терминала в Visual Studio 2017 и более ранних версий поступили очень странно, после того как поставишь этот whack whack terminal, наинаешь прописывать переменные среды
Path:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.1 4.26428\bin\Hostx86\x86;
Lib:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.1 4.26428\lib\x86;
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17134.0\um\x86
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x86
Include:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.1 4.26428\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt
C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\shared
причём после каждой переменной приходится перезапускать эту студию, компилируешь и выходит опять какая-то ошибка, ищешь и опять добавляешь переменную среды, и вот из списка видно, что так минимум 7 раз придётся сделать прежде, чем скомпилировать. С другой стороны, в той же Visual Studio Code просто Ctrl+~ и никаких проблем. Плюс сам этот whack whack terminal у меня как-то подлагивает на ноуте.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.05.2020, 11:03
Помогаю со студенческими работами здесь

Как в коде указать все папки, из которых нужно удалить все файлы старше 31-го дня?
Привет всем, кто не обошёл вниманием данный пост!:friends: Есть ТЗ: удалять файлы старше 31 дня из заданных папок. Пример -...

exe-файлы запускаются одной и той же программой
Приветствую! Кто-то из домашних &quot;понастраивал&quot; Windows7. Теперь все ярлыки на рабочем столе(Word, Excel, IE, WinAmp) имеют значок Word'а...

Как убрать консоль при компиляции в exe?
Использую PascalABC.NET. При компиляции в exe на заднем фоне висит консоль. Пытался решить проблему самостоятельно, но {$apptype windows}...

Как вставлять файлы в программу при компиляции
Поискав, я не нашел как вставить текст или картинку в программу при компиляции. То есть чтобы на выходе у меня остался только *.exe со...

Как поместить все файлы в один exe?
К примеру есть программа, которая выводит картинку и звук). И выходит что сам exe при запуске должен найти аудио дорожку и фотографии и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru