Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Создание obj файла с помощью cl.exe
|
|||
|---|---|---|---|
|
#18+
Здраствуйте уважаемые форумчане. Возникла необходимость компиляции срр файла в объектник без применения средств студии (тоесть только компилятор и коммандная строка). Написал следуюший батник: cl /Fo Console.cpp /I "c:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\" но при его выполнении компилятор выдает гору ошибок, по всей видимости связанных с последней: "Cannot open include file: 'windows.h': Invalid argument" С чем это связано? Заранее благодарен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2008, 14:05 |
|
||
|
Создание obj файла с помощью cl.exe
|
|||
|---|---|---|---|
|
#18+
Proger89Здраствуйте уважаемые форумчане. Возникла необходимость компиляции срр файла в объектник без применения средств студии (тоесть только компилятор и коммандная строка). Написал следуюший батник: cl /Fo Console.cpp /I "c:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\" но при его выполнении компилятор выдает гору ошибок, по всей видимости связанных с последней: "Cannot open include file: 'windows.h': Invalid argument" С чем это связано? Заранее благодарен С тем что не настроены пути. Поищи в каталоге студии bin/vcvar32.bat - он настраиваем переменные среды окружения, которые используются cl для компиляции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2008, 14:08 |
|
||
|
Создание obj файла с помощью cl.exe
|
|||
|---|---|---|---|
|
#18+
Анатолий Широков С тем что не настроены пути. Поищи в каталоге студии bin/vcvar32.bat - он настраиваем переменные среды окружения, которые используются cl для компиляции. Но как это сделать? В этом файле только ссылка на другой файл (vsvars32.bat). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2008, 14:17 |
|
||
|
Создание obj файла с помощью cl.exe
|
|||
|---|---|---|---|
|
#18+
Proger89 Анатолий Широков С тем что не настроены пути. Поищи в каталоге студии bin/vcvar32.bat - он настраиваем переменные среды окружения, которые используются cl для компиляции. Но как это сделать? В этом файле только ссылка на другой файл (vsvars32.bat). запуски cmd запусти файл vsvars32.bat теперь можешь компилировать с помощью cl ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2008, 14:26 |
|
||
|
Создание obj файла с помощью cl.exe
|
|||
|---|---|---|---|
|
#18+
Анатолий Широков теперь можешь компилировать с помощью cl Наверное я действительно очень туплю. Но, когда я запустил cmd выполнил вышеуказанный батник и выполнил батник cl /Fo Console.cpp /L c:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\ компилятор выдал кучу сообшений об ошибках ссылаясь на winbase.h. Ошибок в коде моих модулей точно нет, проверено в студии. В чем может быть проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2008, 15:34 |
|
||
|
Создание obj файла с помощью cl.exe
|
|||
|---|---|---|---|
|
#18+
если уже запустили батник, то /L"c:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\" в параметрах cl лишняя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2008, 15:39 |
|
||
|
Создание obj файла с помощью cl.exe
|
|||
|---|---|---|---|
|
#18+
... нажал на Enter не дописав до конца. Я уже проверил и cl /Fo Console.cpp и cl Console.cpp после запуска батника для установки переменных окружения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2008, 23:54 |
|
||
|
Создание obj файла с помощью cl.exe
|
|||
|---|---|---|---|
|
#18+
To: Proger89 Proger89Возникла необходимость компиляции срр файла в объектник без применения средств студии (тоесть только компилятор и коммандная строка). Написал следуюший батник: cl /Fo Console.cpp /I "c:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\" но при его выполнении компилятор выдает гору ошибок... Проблему можно поставить более глобально. Компиляция проектов Visual Studio C++ из командной строки. Дело в том, что при изучении примеров на C++ часто приходится сталкиваться с ситуацией, когда программа компилируется в одной версии студии, но не компилируется в другой. Например, открытый проект 2С (15 Мб текста в исходниках) при компиляции в VC8 выдает туеву хучу ошибок, тогда как при компиляции в VC6 ограничивается парой предупреждений. То же касается компиляции dll проекта 1С++ и других огромных проектов. Можно конечно поставить несколько версий студий на компьютере, однако они слегонца конфликтуют. Например, в VC6 становиться недоступной справочная система после установки еще VC8 и т.п. Лучше ограничится одной инсталлированной студией (я предпочитаю 6-ю), а из остальных взять только библиотечные и другие необходимые файлы, а также exe-ки и dll-ки для компиляции из командной строки. А дальше пытаться компилировать нужные проекты либо используя nmake-подобные средства, либо с помощью командных файлов. Первые мне не показались достаточно удобными и эффективными, а по вторым информации в Интернете практически нет. Во всяком случае, я ничего путного так и не нашел. Поэтому пошел по пути научного втыка и написал свой командный файл, который позволяет создавать не только объектные, но и исполнимые файлы. Вот мой файл ExeR.cmd (настроенный пока только на Release версию) : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. Как видно, этот файл генерит другой командный файл a.cmd, с содержимым вида: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. Теперь уже запускаем этот файл (такое разделение удобно для контроля за значениями объявленных переменных) и получаем файл отчета a.a типа: stdafx.cpp About.cpp Main.cpp MainDoc1.cpp MainDoc2.cpp MainFrame.cpp ChildFrame.cpp Generating Code... Т.е. компиляция прошла удачно. Перед этим создаем два файла со списками компилируемых модулей: c_cpp.txt и obj_lib.txt . Их названия говорят сами за себя. В моем примере их содержимое было таким: для c_cpp.txt : About.cpp Main.cpp Docs\MainDoc1.cpp Docs\MainDoc2.cpp Frames\MainFrame.cpp Frames\ChildFrame.cpp и для obj_lib.txt : Release\About.obj Release\Main.obj Release\MainDoc1.obj Release\MainDoc2.obj Release\MainFrame.obj Release\ChildFrame.obj Release\stdafx.obj Файл c_cpp.txt удобно создавать с помощью команды dir/b *.cpp>c_cpp.txt . А второй файл строится на основе первого. Главное, удалить строку с именем stdafx.cpp в первом файле, так как он компилируется отдельно. Все, теперь мы имеем и объектные и исполнимый файл, в данном случае lional.exe, так что задача на данном уровне решена. Следует еще отметить, что, например в 6-й студии, возможно, придется скопировать файл mspdb60.dll в каталог C:\Program Files\Microsoft Visual Studio\VC98\Bin\ из каталога C:\Program Files\Microsoft Visual Studio\Common60\MSDev98\Bin\ (Для VB98 так и сделано самой студией VS6). Аналогично, следует проделать подобную процедуру с компилятором ресурсов (файлы RC.EXE и RCDLL.DLL). Иначе придется использовать переменную окружения PATH. Кстати, если вас интересуют переменные окружения, то для сбора информации о них можно использовать командный файл, скажем env.cmd типа: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. В моем случае env.log будет: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. Параметры компиляции, например, для Debug версии можно подсмотреть в лог-файлах студии для успешно скомпилированных проектов типа *.plg или BuildLog.htm . Данный командный файл ExeR.cmd не является полностью универсальным, над этим я работаю. Скажем, не решена проблема 8-ой студии, компиляция без ее инсталляции не хочет происходить. Более того, скомпилированный в ней exe-шник не желает запускаться даже при наличии файлов поддержки типа mfc80.dll и т.п. Надеюсь, кто-нибудь подскажет решение… ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2008, 12:09 |
|
||
|
Создание obj файла с помощью cl.exe
|
|||
|---|---|---|---|
|
#18+
EmeryПроблему можно поставить более глобально. Во первых, пожалуйста, обрамляй публикуемые куски исходников тэгом SRC, а текстовые файлы тэгом FIXED. Твои сообщения будет проще читать. Во вторых, все что ты насочинял совершенно не нужно, задача компиляции решается намного проще. Открой для себя семейство утилит make . Оно тебе даст возможность и условной компиляции и не будет перекомпилировать те исходники которые не изменялись и многое-многое другое. При нужде можно и с каталогами играться и условную компиляцию делать и черта в ступе. Если ты предпочитаешь работать с микрософтовскими трансляторами, то можешь использовать nmake. Студия умеет выгружать проект в makefile с которым работает nmake (но там будет много лишней фигни, руками написать обычно удобнее). А если у тебя нет страсти к микрософтовским продуктам, то лучше взять GNU Make А здесь документация на него Твой проект на gmake диалекте запросто описывается вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Для nmake будет что-то похожее, но чуть более многословное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2008, 18:13 |
|
||
|
Создание obj файла с помощью cl.exe
|
|||
|---|---|---|---|
|
#18+
White Owl wrote: > Во вторых, все что ты насочинял совершенно не нужно, задача компиляции > решается намного проще. Открой для себя семейство утилит *make*. Оно Это он чего, свой аналого make-а накорябал на шеле ? Крута ! Я-то не читал, многа букаф... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2008, 19:05 |
|
||
|
Создание obj файла с помощью cl.exe
|
|||
|---|---|---|---|
|
#18+
MasterZivЭто он чего, свой аналого make-а накорябал на шеле ? Крута !Причем на виндовом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2008, 21:27 |
|
||
|
Создание obj файла с помощью cl.exe
|
|||
|---|---|---|---|
|
#18+
White OwlВо первых, пожалуйста, обрамляй публикуемые куски исходников тэгом SRC, а текстовые файлы тэгом FIXED. Твои сообщения будет проще читать. Ok, замечание принимается. White OwlВо вторых, все что ты насочинял совершенно не нужно, задача компиляции решается намного проще. Открой для себя семейство утилит make . Оно тебе даст возможность и условной компиляции и не будет перекомпилировать те исходники которые не изменялись и многое-многое другое. При нужде можно и с каталогами играться и условную компиляцию делать и черта в ступе. Ну да, нажал enter’ом на *.dsw файл, далее Alt-B / U / Enter и проект скомпилирован. Куда уже проще? И nmake, и ему подобные, здесь даже не нужны. Только, никто еще не отменял разнообразия. Я смотрел код nmake.c . Ну и что? Все, в конечном итоге завязано на компиляторы командной строки. Тогда, почему я не могу использовать их непосредственно? “многа букаф”? В программе на си их не меньше. Я ведь писал, почему не хочу использовать make-утилиты. Считайте, что я предложил третий способ компиляции, хотя понятно, что для собственно компиляции достаточного одного. Откровенно говоря, здесь я не столько отвечал на вопрос топика, сколько опубликовал информацию, которую сам, в свое время, долго и нудно искал в Интернете. Надеюсь, поисковики ее проиндексируют. Если она тут не в тему, можете удалить ее, я найду другое место… ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2008, 09:30 |
|
||
|
Создание obj файла с помощью cl.exe
|
|||
|---|---|---|---|
|
#18+
Emery wrote: > Я ведь писал, почему не хочу использовать make-утилиты. А можно ещё раз повторить коротко и сжато, почему ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2008, 11:54 |
|
||
|
Создание obj файла с помощью cl.exe
|
|||
|---|---|---|---|
|
#18+
MasterZivА можно ещё раз повторить коротко и сжато, почему ?он их ниасилил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2008, 12:45 |
|
||
|
Создание obj файла с помощью cl.exe
|
|||
|---|---|---|---|
|
#18+
EmeryКак видно, этот файл генерит другой командный файл a.cmd, с содержимым вида: Данный командный файл ExeR.cmd не является полностью универсальным, над этим я работаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2008, 12:48 |
|
||
|
Создание obj файла с помощью cl.exe
|
|||
|---|---|---|---|
|
#18+
EmeryНу да, нажал enter’ом на *.dsw файл, далее Alt-B / U / Enter и проект скомпилирован.Ты забыл еще написать что надо подождать пока студия загрузиться между запуском dsw и возможностью нажать Alt+B. И для модификации параметров проекта надо запускать ту самую студию и шариться по ее менюшкам и диалогам только для того чтобы поставить или убрать один единственный ключ компилятора. EmeryКуда уже проще?Набрать в командной строке make и нажать Enter. Никакого ожидания студии, никакой мыши, результат компиляции сразу на экране и всегда точно знаешь в каком режиме компилировался тот или иной исходник. EmeryЯ смотрел код nmake.c . Ну и что? Все, в конечном итоге завязано на компиляторы командной строки. Тогда, почему я не могу использовать их непосредственно? “многа букаф”?Да можешь конечно, если хочешь еще разок изобрести велосипед - удачи. И кстати, зачем смотреть код nmake.c? Им пользоваться надо. EmeryЯ ведь писал, почему не хочу использовать make-утилиты.Они тебе "не показались достаточно удобными и эффективными"? Ну что я могу сказать... Ты их просто использовать не умеешь. Какая у тебя с ними проблема возникла что ты не смог ее решить? Переключаться между несколькими компиляторами? Добавь в свой makefile такие строчки: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Чего тебе еще не хватает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2008, 18:16 |
|
||
|
Создание obj файла с помощью cl.exe
|
|||
|---|---|---|---|
|
#18+
MasterZiv> Я ведь писал, почему не хочу использовать make-утилиты. А можно ещё раз повторить коротко и сжато, почему ? По большому счету я не вижу принципиальной разницы между обсуждаемыми тремя способами компиляции. Естественно, вы не будете компилировать свой проект всеми этими способами одновременно. Выберете один тот, который вам больше нравится. Хорошо, пусть компиляция с помощью make-утилит самая крутая. И что, вы никогда не будете компилировать из самой студии? Будете, если в данном конкретном случае, так будет целесообразней. И дело не в том, что я не осилил nmake, gmake или cmake. Просто я подумал, что если все сводится к простой компиляции из командной строки, то почему бы этого не сделать явно. Во-первых, такой способ мне показался более естественным и красивым, а во-вторых, меня сильно разозлило, что ясной и четкой информации по этому вопросу я не нашел. Вот и решил разобраться в этом вопросе до конца. И не жалею. Кое-что новое открыл для себя. Всегда не вредно знать альтернативные способы, может быть они когда-нибудь и пригодятся. Ну, это не серьезно превращать программирование в спорт. Мол, я скомпилировал програмулину за 2 секунды, а я за полторы. Куда важнее разбираться в сути вещей, даже если на это потребуется дополнительное время. White Owl> Да можешь конечно, если хочешь еще разок изобрести велосипед - удачи. И кстати, зачем смотреть код nmake.c? Им пользоваться надо. Велосипеды иногда не вредно изобретать, особенно если информация по ним не слишком общедоступна. В науке, да и в программировании, это типичная ситуация, когда легче какой-то результат переоткрыть, чем найти, даже когда точно известно, что он существует. Ну, посидел я пару дней над своим командным файлом в рабочее время, получил что хотел, ну и что? Меня больше волнует вопрос, хотя он и не принципиален, как скомпилировать проект с помощью 8-й студии (не важно, с помощью *make-утилиты или командного файла), при условии, что доступны все необходимые файлы этой студии, но сама VS8 не инсталлирована на компьютере. Если вы все такие крутые, то подскажите ответ на этот вопрос. И, я уже спрашивал, как запустить скомпилированный в ней exe-шник, который не желает запускаться даже при наличии файлов поддержки типа mfc80.dll и т.п. Очевидно, это связано с записями в реестре, которая делает 8-я студия при инсталляции. Но это свойство 8 и, вероятно, 9-й студии также, мне очень не нравиться. nmake.c я смотрел из любопытства, так как еще не определился окончательно со своим стилем программирования в с/с++. А смотрю я очень много разного кода, благо, в Интернете этого добра достаточно. Ну и, в заключение, *make-утилиты меня вполне устраивают, я ничего не имею против них, хотя VS7 и выше перестали поддерживать это средство на уровне оболочки (IDE). Пусть и несколько заумное, но свое дело делает достаточно хорошо… ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2008, 08:46 |
|
||
|
Создание obj файла с помощью cl.exe
|
|||
|---|---|---|---|
|
#18+
EmeryИ что, вы никогда не будете компилировать из самой студии?Никогда. Студию (да и вообще любые IDE) я запускаю только на попробовать. Мне они не удобны. EmeryБудете, если в данном конкретном случае, так будет целесообразней. И дело не в том, что я не осилил nmake, gmake или cmake.Прошу прощения, но cmake в этом списке лишний. cmake это не сборщик проектов, это создаватель проектов. У gnu make и nmake есть некоторая разница в описании проектов (разные диалекты по существу). Ну и для тех кто по каким-то причинам желает собирать свой проект и через gmake и через nmake и придумали CMake. Это совершенно отдельный язык описания проектов. CMake после запуска читает свой сценарий проекта и создает новый makefile на том диалекте который ты заказал. Потом уже скармливаешь полученый makefile своему gmake или nmake и те занимаются собственно сборкой. EmeryПросто я подумал, что если все сводится к простой компиляции из командной строки, то почему бы этого не сделать явно.У твоего подхода есть несколько существенных минусов. 1) Ты не можешь в батнике проверить какой из исходников изменился и перекомпилировать только измененные. На маленьких проектах это не кажется таким уж большим делом, но когда количество твоих исходников дойдет до десятка-полутора... 2) Ты в нескольких разных местах прописываешь имена исходников, объектников и тд и тп. Если надо добавить в проект новый файл (или удалить) тебе прийдется пробежаться по всем своим спискам и поправить их все. А если ошибешься? 3) Кода у тебя ручного очень много, для исправления одного ключа прийдется долго бегать по батнику(-ам) и искать где ты задаешь параметры компиляции. EmeryВо-первых, такой способ мне показался более естественным и красивым, а во-вторых, меня сильно разозлило, что ясной и четкой информации по этому вопросу я не нашел. Вот и решил разобраться в этом вопросе до конца. И не жалею. Кое-что новое открыл для себя. Всегда не вредно знать альтернативные способы, может быть они когда-нибудь и пригодятся. Ну, это не серьезно превращать программирование в спорт. Мол, я скомпилировал програмулину за 2 секунды, а я за полторы. Куда важнее разбираться в сути вещей, даже если на это потребуется дополнительное время.С ЭТИМ никто не спорит :) А доскональный разбор вопроса только приветсвуется. EmeryЕсли вы все такие крутые, то подскажите ответ на этот вопрос. И, я уже спрашивал, как запустить скомпилированный в ней exe-шник, который не желает запускаться даже при наличии файлов поддержки типа mfc80.dll и т.п. Очевидно, это связано с записями в реестре, которая делает 8-я студия при инсталляции. Но это свойство 8 и, вероятно, 9-й студии также, мне очень не нравиться.Это одна из причин, по которой я не использую микрософтовские компиляторы. А твоя проблема в манифестах. При компиляции VC2005 и дальше, записывая в исполняемый файл имя dll добавляет теперь еще кучу опознавательных знаков этой dll. Делается это при помощи специальной гадости под названием manifest. Вот читай этот набор статей: http://msdn.microsoft.com/en-us/library/ms235542.aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2008, 18:37 |
|
||
|
Создание obj файла с помощью cl.exe
|
|||
|---|---|---|---|
|
#18+
maXmo wrote: > А можно ещё раз повторить коротко и сжато, почему ? > он их ниасилил. Ну у меня как бы тоже были трудности с ними. А именно - я их раз наверное 5 учил на короткое время и потом напроч забывал. Но это же не говорит о том, что свои надо делать. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2008, 19:40 |
|
||
|
Создание obj файла с помощью cl.exe
|
|||
|---|---|---|---|
|
#18+
White Owl wrote: > Я смотрел код nmake.c . Ну и что? Все, в конечном итоге завязано на Я еще хочу напомнить о существовании ещё порядка 5 хороших make-систем, начиная с анта и кончая CMake-ом. Это если классический make не нравится. У него кстати есть и недостатки - зависимость на внешний шелл. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2008, 19:43 |
|
||
|
Создание obj файла с помощью cl.exe
|
|||
|---|---|---|---|
|
#18+
Emery wrote: > По большому счету я не вижу принципиальной разницы между обсуждаемыми > тремя способами компиляции. Естественно, вы не будете компилировать свой Принципиальная разница здесь - что make знают немного больше людей, чем ты один. И пользуются тоже. > Велосипеды иногда не вредно изобретать, особенно если информация по ним > не слишком общедоступна. В науке, да и в программировании, это типичная В общем, я понял. Он "прётся". Ну что ж, может это действительно не так и плохо, по крайней мере лучше, чем не уметь пускать компилятор кроме как из IDE. > скомпилировать проект с помощью 8-й студии (не важно, с помощью > *make-утилиты или командного файла), при условии, что доступны все > необходимые файлы этой студии, но сама VS8 *не инсталлирована* на > компьютере. Не понял. Компилятор и линкер от неё есть ? они нужны. Кроме того, на nmake они уже плюнули, и у них уже другой билдер. > вопрос. И, я уже спрашивал, как запустить скомпилированный в ней > exe-шник, который не желает запускаться даже при наличии файлов > поддержки типа mfc80.dll и т.п. Очевидно, это связано с записями в > реестре, которая делает 8-я студия при инсталляции. Но это свойство 8 и, > вероятно, 9-й студии также, мне очень не нравиться. Чего ? Это ты что-то невероятное говоришь. Оно конечно, после висты от МС всего можно ожидать, но пока сам не увижу, не поверю. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2008, 19:49 |
|
||
|
Создание obj файла с помощью cl.exe
|
|||
|---|---|---|---|
|
#18+
White Owl wrote: > А твоя проблема в манифестах. При компиляции VC2005 и дальше, записывая > в исполняемый файл имя dll добавляет теперь еще кучу опознавательных > знаков этой dll. Делается это при помощи специальной гадости под > названием manifest. Там же это всё отключается .... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2008, 19:51 |
|
||
|
Создание obj файла с помощью cl.exe
|
|||
|---|---|---|---|
|
#18+
White Owl> Студию (да и вообще любые IDE) я запускаю только на попробовать. Мне они не удобны. А как же тогда отладка, проход по найденным ошибкам, быстрая навигация по файлам? Есть, правда, у IDE и недостатки, например, слабая подсветка синтаксиса. Отдельные файлы проекта я предпочитаю редактировать в Source Insight Program Editor. Весьма неплохой редактор, может, например, хавать много-мегабайтные листинги, в том числе на ассемблере. Если надо работать с длинными строками (с нумерацией колонок) то весьма хорош UltraEdit Professional Text/Hex Editor (обрабатывает строки длиной до 20 Кб). Но это так, к слову. Это к тому, что GUI студии не идеально. Но совсем без IDE тоскливо. White OwlПрошу прощения, но cmake в этом списке лишний. Хорошо, согласен. Руки еще не дошли вникнуть в него серьезно. Информацию по *make-утилитам я собираю, чтобы при явной необходимости воспользоваться ими. White OwlУ твоего подхода есть несколько существенных минусов. Естественно, что в представленном виде он не заменит профессиональные *make средства. К этому я и не стремился. Хотя для обычных случаев он меня вполне устраивает. Просто был небольшой пробел в информации, и были найдены некоторые ответы. Вопрос эффективности, это уже другая песня. White OwlТы не можешь в батнике проверить какой из исходников изменился и перекомпилировать только измененные. Не буду спорить. Пока, действительно, вопрос времени не принципиален. До сверхкрупных проектов еще далеко, а те, что есть можно компилировать любым способом, без особой разницы. Хотя есть у меня желание проверить, а нельзя ли эту проблему решить опциями компилятора. Их там достаточно много, чтобы поэкспериментировать. Во всяком случае, компиляция с нуля у меня занимала где-то на секунду больше времени, чем просто перекомпиляция. Однако компилировать собственные проекты мне все же удобней в IDE студии. White OwlТы в нескольких разных местах прописываешь имена исходников, объектников и тд и тп. Если надо добавить в проект новый файл (или удалить) тебе прийдется пробежаться по всем своим спискам и поправить их все. А если ошибешься? Да нет, с чего ты взял? В верхушке ExeR.cmd (в секции «Параметры компиляции») прописываются только имя конечного файла (*.exe или *.lib файла, до dll-ки еще руки не дошли) и основного файла ресурсов (*.rc). Список же собственно си и си++ файлов задается в отдельном текстовом файле. Получаю его командой типа: Код: plaintext White OwlКода у тебя ручного очень много, для исправления одного ключа прийдется долго бегать по батнику(-ам) и искать где ты задаешь параметры компиляции Ну почему, я настроил «Source Insight 3» на свой *.cmd файл, он дает великолепную подсветку. Ключи компиляторов и линковщика, как впрочем, и все остальное, у меня разбиты по секциям, все ищется быстро. По крайней мере, мне все легко и понятно. Ну а любой может настроить командный файл под себя. Еще раз повторю, ведь это естественно компилировать из командной строки с помощью командного файла, несмотря на то, что *make-средства более универсальные и пусть даже более эффективные. Я настроил свой батник на мои сегодняшние нужды и мне его вполне хватает. Нужно будет расширить его возможности, проблем не будет, так как его структура достаточно очевидная. White OwlА твоя проблема в манифестах. MasterZivТам же это всё отключается .... Спасибо за наводку, думаю, достаточно информации, чтобы полностью разобраться… White Owlлучше взять GNU Make А здесь документация на него Спасибо и за эту информацию. Все скачал, буду разбираться и с этим… MasterZivНо это же не говорит о том, что свои надо делать. Странные, вы ребята. Ну, давайте сейчас наезжать на Мелкософт, зачем он предоставил возможность компиляции из графической оболочки студии, ведь White Owl «никогда» не будет ее использовать. Он не будет, а я буду. Ну что из того? Меня, откровенно говоря, удивляет такой дотошный «разбор полетов» по пустяковому, в общем, поводу. Мало ли кто, какой батник написал, и зачем он это сделал? Это средство для того и служит, чтобы решать свои частные индивидуальные проблемы. Ну, получился файлик с претензией на некую локальную универсальность, ну флаг в руки его автору. Я бы даже особого внимания не обратил бы на этот факт, если бы автором был не я. На цвет и вкус товарищей нет. У каждого программиста свое видение концепции программирования. Хорошо еще, что мы не обсуждаем стили программирования, вот был бы мордобой! А, в конечном счете, каждый бы остался при своем мнении. Я, например, предпочитаю знать о разных возможностях, но выбирать в каждом конкретном случае то, что мне больше подходит или, просто, больше нравится, пусть даже и менее эффективно. MasterZivПринципиальная разница здесь - что make знают немного больше людей, чем ты один. И пользуются тоже. Речь шла о способности компилировать проекты, а не об известности этих способов. Любым из этих трех способов можно скомпилировать любой проект, несмотря на то, что последний способ вполне возможно придется дорабатывать (что не сложно). Причем даже речь не идет об эффективности, только о принципиальной возможности. Вопрос топика был до безобразия, до неприличия :) слишком прост, «Создание obj файла с помощью cl.exe». На него вполне ответили в первых нескольких комментариях. Чтобы как-то оживить дискуссию и заодно опубликовать свои наработки по непосредственной компиляции я вышел со своим сообщением. Причем тему данной ветки пришлось абстрагировать, чтобы было интересней. Думаю, автор вопроса получил информации более чем достаточно. Вот он пусть и выбирает, что ему больше подходит. Я даже допускаю, ему может быть «впадлу» разбираться с *make-утилитами. Не зря ж вы пишете, что MasterZivНу у меня как бы тоже были трудности с ними. А именно - я их раз наверное 5 учил на короткое время и потом напроч забывал. Насколько я понял, Proger’a89 привлекала прежде всего непосредственная компиляция из командной строки, может быть даже одноразовая. Вот поэтому я и предложил, правда, может быть немного раздутый вариант компиляции из командной строки, тем более что эта тема меня интересует также. Вы же: «это неправильный способ компиляции, так делать нельзя!» (конечно, я утрирую :) ). Если это так возмущает народ, значит нужно компилировать таким способом втихаря, чтобы никто не знал :) . Какой-то «театр абсурда». ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2008, 11:25 |
|
||
|
Создание obj файла с помощью cl.exe
|
|||
|---|---|---|---|
|
#18+
Emery White Owl> Студию (да и вообще любые IDE) я запускаю только на попробовать. Мне они не удобны. А как же тогда отладка, проход по найденным ошибкам, быстрая навигация по файлам?Для первого логи, для второго текстовый редактор, для третьего текстовый редактор встроенный в файловый менеджер. Совсем без IDE не тоскливо, а очень замечательно. Не привязан к определенному набору утилит/хоткеев. К тому же, IDE в 90% заточена на один единственный язык. А у меня одновременно в работе до полудюжины. Emery White OwlТы в нескольких разных местах прописываешь имена исходников, объектников и тд и тп. Если надо добавить в проект новый файл (или удалить) тебе прийдется пробежаться по всем своим спискам и поправить их все. А если ошибешься? Да нет, с чего ты взял? В верхушке ExeR.cmd (в секции «Параметры компиляции») прописываются только имя конечного файла (*.exe или *.lib файла, до dll-ки еще руки не дошли) и основного файла ресурсов (*.rc). Список же собственно си и си++ файлов задается в отдельном текстовом файле. Получаю его командой типа: Код: plaintext EmeryЕще раз повторю, ведь это естественно компилировать из командной строки с помощью командного файла, несмотря на то, что *make-средства более универсальные и пусть даже более эффективные. Я настроил свой батник на мои сегодняшние нужды и мне его вполне хватает. Нужно будет расширить его возможности, проблем не будет, так как его структура достаточно очевидная. Так мы ж не спорим с этим :) Мы просто подталкиваем к следующему шагу. EmeryМеня, откровенно говоря, удивляет такой дотошный «разбор полетов» по пустяковому, в общем, поводу.Не удивляйся. У нас тут редко бывает молодежь с мозгами. А таких поучать намного приятнее и веселее чем студентов требующих чтобы за них решили курсовую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2008, 18:23 |
|
||
|
Создание obj файла с помощью cl.exe
|
|||
|---|---|---|---|
|
#18+
White OwlНикакого копирования и переименования, этим всем занимается сам gmake по правилам которые я ему задал. Ну так gmake надо еще скачать и разобраться в нем, тогда как на уровне командного процессора все достаточно просто и очевидно. А если влом копировать ручками, то средства cmd.exe позволяют автоматизировать этот процесс, разве что внешние lib-файлы нужно указывать явно, так как, в общем случае, их наличие или отсутствие непредсказуемо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2008, 08:05 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=35533816&tid=2020070]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
80ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 203ms |

| 0 / 0 |
