|
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
|
||||||
Как передать параметры компилятору?21.08.2018, 17:07. Показов 3337. Ответов 9
Метки нет (Все метки)
В ручном режиме это решается так:
1) Открываю командную строку Visual Studio 2017 2) Прописываю нужную команду для компиляции файла, например, так: CL /EHsc "D:\Hello.cpp" 3) В результате получаю нужный мне исполнимый файл: Hello.exe (смотрите рисунок) Хочу всё это сделать автоматически в консольном приложении С++. Умею по крайней мере пятью способами открыть командную строку Visual Studio 2017:
чтобы при открытии командной строки автоматически компилировался файл Hello.cpp Может подскажете как это сделать?
1
|
||||||
| 21.08.2018, 17:07 | |
|
Ответы с готовыми решениями:
9
передать ссылки как параметры Как передать параметры в main ? Как передать параметры через ShellExecute - C++ |
|
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
|
|||||||||||
| 22.08.2018, 10:47 [ТС] | |||||||||||
|
"А ларчик просто открывался..."
Пересмотрел десятки руководств и нигде не нашел указаний о необходимости использовать значек &. Вот так не работает:
0
|
|||||||||||
|
4079 / 2677 / 432
Регистрация: 09.09.2017
Сообщений: 11,888
|
|||||||||||||||||||||
| 24.08.2018, 16:56 | |||||||||||||||||||||
|
"значок" & указывает выполнить предыдущую команду в фоновом режиме, после чего уже в интерактивном можно запускать следующую:
cmd1 в фоновом режиме и возвращает командную строку
cmd1, cmd2 и cmd3 и возвращает командную строку
cmd1 в фоновом режиме и cmd2 в интерактивном. Как будто после запуска cmd1 в фоне вернул командную строку и в нее тут же вписали cmd2Можно попробовать вместо "значка" & использовать "значки" ;, &&, ||. Они управляют последовательным (вместо параллельного, описанного ранее) запуском программ в зависимости от кода возврата предыдущей команды. Их использование выглядит так:
? - "значок"; запускает cmd2 независимо от того, завершилась cmd1 корректно (код возврата 0) или с ошибкой (не 0)&& запускает cmd2 только в случае корректного завершения (код возврата cmd1 равен 0)|| запускает cmd2 только в случае ошибки (код возврата cmd1 не равен 0). По идее, WinExec / system должны корректно отрабатывать любые спецсимволы, характерные для обычного интерпретатора командной строки, включая полный путь, перенаправление ввода-вывода, последовательность запуска и флаги команд. Проблема в том, что в windows эти команды не всегда ведут себя именно таким образом, и мне неизвестно как это исправить. Было бы неплохо получить комментарий гуру о принципе их работы и правильном использовании.
2
|
|||||||||||||||||||||
|
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
|
|||||||||||
| 25.08.2018, 15:09 [ТС] | |||||||||||
|
И снова дурдом...
Имеется переменная типа std::string в которую записан путь атрибуты и прочее... Например: std::string s = ""C:\Program Files(x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat " & cl /EHsc "D:\\Hello.cpp""; Как эту переменную можно использовать, например, в WinExec? Никакие преобразования, типа s.c_str или (LPCSTR)s не срабатывают... Вот так работает:
Ошибка C3867 "std::basic_string<char,std::char_traits <char>,std::allocator<char>>::c_str": нестандартный синтаксис; используйте "&", чтобы создать указатель на член Иными словами как преобразовать std::string в LPCSTR для подстановки в WinExec или другую функцию запуска процесса? (кроме c_str)
0
|
|||||||||||
|
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
|
||||||
| 25.08.2018, 20:20 | ||||||
|
LVV,
1
|
||||||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
| 26.08.2018, 03:59 | |
|
т.е. скобок у функции c_str() нет
1
|
|
|
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
|
||||||||||||
| 26.08.2018, 10:25 [ТС] | ||||||||||||
|
Вот это я затупил.... ![]() Всё работает. Всем спасибо. Но вот новая проблема. Мне нужно сохранить откомпилированный (исполнимый) файл в определённую папку (директорию). Например, просто на диске D. По умолчанию компилятор сохраняет ехе-файл в папке source текущей учетной записи. В руководствах нашел, что можно переопределить место выходного файла параметром OUT https://msdn.microsoft.com/ru-... 80k4a.aspx https://msdn.microsoft.com/ru-... cy933.aspx Исходя из синтаксиса командной строки https://msdn.microsoft.com/ru-... ecb4h.aspx куда только не пробовал пробовал тыкать этот самый /OUT но всё безуспешно. Что я не так делаю опять?
0
|
||||||||||||
|
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
|
|
| 26.08.2018, 13:07 | |
|
LINK
1
|
|
|
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
|
|
| 26.08.2018, 14:34 [ТС] | |
|
Опять протупил я
0
|
|
|
Модератор
|
|||||||
| 27.08.2018, 15:05 | |||||||
CMD.EXE - не bash, и обычно ждёт завершения консольных команд, разделённых &Если ввести в командной строке CMD.EXE
Исправляется это установкой обычного интерпретатора командной строки
0
|
|||||||
| 27.08.2018, 15:05 | |
|
Помогаю со студенческими работами здесь
10
Как в Dev C++ передать параметры командной строки Как в функцию обработки сообщений передать параметры? Как передать параметры конструктора одного класса другому? Передать параметры в функцию. Передать параметры в main Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|