Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Компиляция программы из командной строки MSVC


Автор: NioTo 3.12.2009, 14:39
Вот начал изучать C++ скачал бесплатный MSVC 2008 Express Edition. Написал простейшую программу (Hello, World!) и скомпилировал через IDE. Размер Debug-экзешника 39 424 байт, размер Release-экзешника 8 704 байт, а после компиляции через командную строку 96 256 байт (компилировал с командой cl /EHsc simple.cpp), больше даже чем Debug-версия. Хотелось бы узнать как это так и как надо, чтобы было точно также как и при компиляции через IDE.

Автор: bsa 3.12.2009, 14:45
NioTo, разве в IDE в журнале сборки не показываются флаги, с которыми вызывается компилятор?

Автор: azesmcar 3.12.2009, 14:54
Цитата(NioTo @  3.12.2009,  14:39 Найти цитируемый пост)
скачал бесплатный MSVC 2008 Expert Edition

 smile 

Цитата(bsa @  3.12.2009,  14:45 Найти цитируемый пост)
разве в IDE в журнале сборки не показываются флаги, с которыми вызывается компилятор? 

нет, но он показывает путь к файлу в котором есть эта информация smile
а точнее путь к файлу BuildLog.htm

Автор: NioTo 3.12.2009, 15:05
Глянул я BuildLog.htm... Кажется мне рановато заморачиваться подобными вещами, но спасибо за наводку.

Автор: azesmcar 3.12.2009, 15:30
NioTo

Можно облегчить задачу
Цитата

path_to_devenv/devenv.exe solutionfile path_to_solution_file /Build

помеченные красным строки заменить реальными путями
path_to_devenv - путь к devenv.exe, поищи в папке Visual Studio
path_to_solution_file - путь к твоему солюшену (файл с расширением .sln в папке твоего проекта)
в этом случае все аргументы компиляции будут браться из настроек проекта. Только вот нафиг тебе это надо?

Автор: NioTo 3.12.2009, 15:46
Да дело в кодировке, если в IDE писать программу то на выходе получится кракозябра, необходимо конвертировать в CP866. Да и имхо проще без всяких солюшенов и прочего, просто в блокноте написал код запустил командную строку и скомпилировал.

Автор: azesmcar 3.12.2009, 15:54
Цитата(NioTo @  3.12.2009,  15:46 Найти цитируемый пост)
Да дело в кодировке, если в IDE писать программу то на выходе получится кракозябра, необходимо конвертировать в CP866. 

В каком смысле? Русский текст не выводит? так и скажи, это решается. Покажи свой код.

Цитата(NioTo @  3.12.2009,  15:46 Найти цитируемый пост)
Да и имхо проще без всяких солюшенов и прочего, просто в блокноте написал код запустил командную строку и скомпилировал. 

Проще???? smile проще писать программу в блокноте? мсье знает толк в извращениях smile 

Автор: NioTo 3.12.2009, 16:02
Код простой:
Код

#include <iostream>

int main() {
   std::cout << "Добро пожаловать в C++!" << std::endl;

   return 0;
}

Автор: azesmcar 3.12.2009, 16:05
ай ай ай товарищ..как же это вы без гравицапы пепелац выкатываете из гаража? Это непорядок © smile 
Код

#include <iostream>

int main() {
    setlocale(LC_ALL, "rus");
    std::cout << "Добро пожаловать в C++!" << std::endl;
}

Автор: NioTo 3.12.2009, 16:10
Хммм... занятно. Спасибо, будем знать и использовать.

Автор: fell 3.12.2009, 21:12
Не нужны новичку никакие IDE, как сказал один программист "не люблю использовать программы, которые умнее меня". g++ если не ошибаюсь консольный компилятор для плюсов, gcc сишный, gcc file.c -o outfile таким образом делается. Пишешь в блокноте компилишь, читаешь книгу по С++ там есть примеры и задачки пишешь в блокноте и компилишь. Еще лучше пользоваться линуксом и редактором vim. 

Автор: azesmcar 3.12.2009, 21:40
Цитата(fell @  3.12.2009,  21:12 Найти цитируемый пост)
Не нужны новичку никакие IDE, как сказал один программист "не люблю использовать программы, которые умнее меня". g++ если не ошибаюсь консольный компилятор для плюсов, gcc сишный, gcc file.c -o outfile таким образом делается. Пишешь в блокноте компилишь, читаешь книгу по С++ там есть примеры и задачки пишешь в блокноте и компилишь. Еще лучше пользоваться линуксом и редактором vim.  

а еще лучше вообще без операционной системы smile нафиг C++, учим ассемблер и пишем напрямую в оперативную память, компиляторы и IDE придуманы лентяями.

Цитата(fell @  3.12.2009,  21:12 Найти цитируемый пост)
как сказал один программист "не люблю использовать программы, которые умнее меня". 

очень интересно, только вот не совсем понятно с чего вдруг мнение "одного программиста" должно быть авторитетным?

Автор: bsa 4.12.2009, 01:28
Цитата(fell @  3.12.2009,  21:12 Найти цитируемый пост)
Пишешь в блокноте компилишь, читаешь книгу по С++ там есть примеры и задачки пишешь в блокноте и компилишь.
Поддерживаю. Чтобы понять язык и процесс компиляции нужно начинать с этого. А потом можно и к IDE переходить smile

Автор: unicuum 4.12.2009, 06:12
Цитата(azesmcar @  3.12.2009,  15:54 Найти цитируемый пост)

Цитата(NioTo @  3.12.2009 @   15:46)

Да и имхо проще без всяких солюшенов и прочего, просто в блокноте написал код запустил командную строку и скомпилировал. 


Проще???? user posted image проще писать программу в блокноте? мсье знает толк в извращениях user posted image  

Можешь и меня в извращенцы записывать. smile

Добавлено через 6 минут и 51 секунду
Раз уж речь об этом зашла, краткое пособие для извращенцев. В vs есть Visual Studio ххх Command Prompt, а если компилятор другой, то достаточно установить к нему путь в обычной консоли cmd.
Код

set PATH=путь_к_компилятору

И потом компилить, что нужно.

Автор: azesmcar 4.12.2009, 07:15
Цитата(unicuum @  4.12.2009,  06:12 Найти цитируемый пост)
Можешь и меня в извращенцы записывать. smile

понял, записываю smile 

отладчик тебе видимо тоже не нужен.

Автор: andrew_121 4.12.2009, 07:55
Накер новичку ИДЕ?! Он в них больше запутается чем в коде хелловорда ;)

Добавлено через 1 минуту и 16 секунд
Цитата(azesmcar @  4.12.2009,  07:15 Найти цитируемый пост)
Здесь могла бы быть ваша реклама.

меня прорекламируй ;)

Автор: azesmcar 4.12.2009, 08:36
Цитата(andrew_121 @  4.12.2009,  07:55 Найти цитируемый пост)
Накер новичку ИДЕ?! Он в них больше запутается чем в коде хелловорда ;)

Верно! Пусть часами ищет строку в которой пропустил точку с запятой, пусть ищет строку в которой произошла ошибка вместо обычного нажатия F4 (или соответствующий аналог в других IDE), пусть расставляет cout -ы для отладки программы вместо запуска отладчика, пусть...пусть...и так далее. И что-то я не помню чтобы хоть один новичок из моих знакомых путался в IDE. Я и сам начинал писать в VS6, проблем не припоминаю. Да и я не пойму, почему это новичком у вас считается человек, который впервые в жизни увидел клавиатуру?

Цитата(andrew_121 @  4.12.2009,  07:55 Найти цитируемый пост)
меня прорекламируй ;) 

а поконкретней? какой из твоих талантов? smile 

Автор: fell 4.12.2009, 13:58
В качестве отладчика могу порекомендовать dbxtool входит в пакет Sun Studio 12 отличная штука.
Другое дело, что для программ из 20-50 строк отладчик вобщем то не нужен smile А больше новичок и не напишет в первое время.

Автор: djamshud 4.12.2009, 14:16
Отладчик - последняя надежда, когда уже ничего не помогает. Новичку не нужен. Новичку текстовый редактор с подсветкой синтаксиса в зубы и консоль в руки.

Добавлено через 2 минуты и 15 секунд
>Верно! Пусть часами ищет строку в которой пропустил точку с запятой, пусть ищет строку в которой произошла ошибка

Подавлять stderr вроде бы никто не предлагал;).

Автор: azesmcar 4.12.2009, 14:35
Цитата(fell @  4.12.2009,  13:58 Найти цитируемый пост)
В качестве отладчика могу порекомендовать dbxtool входит в пакет Sun Studio 12 отличная штука.

веселые танцы с бубном smile 
как много чего надо поставить, чтобы не ставить IDE.

Цитата(djamshud @  4.12.2009,  14:16 Найти цитируемый пост)
Подавлять stderr вроде бы никто не предлагал;). 

ага, потом смотреть в этом stderr строку, в которой произошла ошибка, потом искать эту строку в блокноте.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)