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

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

20.05.2020, 17:45. Показов 2356. Ответов 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
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru