компиляция без сборки
От: galileo Земля  
Дата: 15.06.22 22:31
Оценка:
работаю с большим проектом VS2019 и стало надоедать время сборки
помню раньше можно было запускать компиляцию без линковки, но сейчас такой опции нету

остстается либо сборка всего проета, либо компиляция отдельного файла

есть ли какие то другие опции
Re: компиляция без сборки
От: _NN_ www.nemerleweb.com
Дата: 16.06.22 05:15
Оценка: 3 (1)
Здравствуйте, galileo, Вы писали:

G>работаю с большим проектом VS2019 и стало надоедать время сборки

G>помню раньше можно было запускать компиляцию без линковки, но сейчас такой опции нету

G>остстается либо сборка всего проета, либо компиляция отдельного файла


G>есть ли какие то другие опции


https://docs.microsoft.com/en-us/cpp/build/reference/c-compile-without-linking?view=msvc-170
Пожалуйста

Другой вариант это поменять в проекте тип на Library вместо Application.
При создании lib не нужна линковка.

Кстати а почему время сборки большое ?
Первая сборка допустим занимает время но последующие должны быть быстрыми.
Посмотрите на что действительно уходит время
https://devblogs.microsoft.com/cppblog/introducing-c-build-insights/


Ещё вариант это поставить ReSharper C++ который прямо во время написания кода подскажет ошибки
http://rsdn.nemerleweb.com
http://nemerleweb.com
Отредактировано 16.06.2022 5:20 _NN_ . Предыдущая версия .
Re[2]: компиляция без сборки
От: galileo Земля  
Дата: 16.06.22 08:14
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>https://docs.microsoft.com/en-us/cpp/build/reference/c-compile-without-linking?view=msvc-170

_NN>Пожалуйста

да, спасибо

_NN>Другой вариант это поменять в проекте тип на Library вместо Application.

_NN>При создании lib не нужна линковка.

это не удобно и не всегда возможно
вариант с запуском компилятора с /с звучит удобнее

_NN>Кстати а почему время сборки большое ?

_NN>Первая сборка допустим занимает время но последующие должны быть быстрыми.
_NN>Посмотрите на что действительно уходит время
_NN>https://devblogs.microsoft.com/cppblog/introducing-c-build-insights/

большой проект, в первый раз понятно что собирается неприлично долго,
последующие сборки, если меняешь файл который ни на что не влияет (в смысле зависимостей компиляции) то время линковки гораздо выше чем время компиляции
что собственно и раздражает

_NN>Ещё вариант это поставить ReSharper C++ который прямо во время написания кода подскажет ошибки


ReSharper C++, когда я его тестил, был неприлично медленнен, может он его пофиксили, но в данный момент я сижу на visual assist, который частенько не прав
Re[3]: компиляция без сборки
От: _NN_ www.nemerleweb.com
Дата: 16.06.22 10:00
Оценка:
Здравствуйте, galileo, Вы писали:

G>это не удобно и не всегда возможно

G>вариант с запуском компилятора с /с звучит удобнее

Как вариант поменять в настройках проекта Application -> Library.
И собрать.
А потом вернуть обратно.

_NN>>Кстати а почему время сборки большое ?

_NN>>Первая сборка допустим занимает время но последующие должны быть быстрыми.
_NN>>Посмотрите на что действительно уходит время
_NN>>https://devblogs.microsoft.com/cppblog/introducing-c-build-insights/

G>большой проект, в первый раз понятно что собирается неприлично долго,

G>последующие сборки, если меняешь файл который ни на что не влияет (в смысле зависимостей компиляции) то время линковки гораздо выше чем время компиляции
G>что собственно и раздражает

Линковка это другая проблема
Тут можно поиграться с инкрементальной линковкой и /debug:fastlink
https://devblogs.microsoft.com/cppblog/recommendations-to-speed-c-builds-in-visual-studio

_NN>>Ещё вариант это поставить ReSharper C++ который прямо во время написания кода подскажет ошибки

G>ReSharper C++, когда я его тестил, был неприлично медленнен, может он его пофиксили, но в данный момент я сижу на visual assist, который частенько не прав
Медленный зато работает.
Я с VA порвал отношения примерно с первого выхода Resharper C++.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: компиляция без сборки
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 16.06.22 20:39
Оценка:
Здравствуйте, galileo, Вы писали:

G>остстается либо сборка всего проета, либо компиляция отдельного файла


Что Вы называете "проектом", и какова конечная цель "компиляции без сборки"?

Если под "проектом" имеется в виду Project в терминологии VS, а под "сборкой" — linking, то фаза сборки/линковки начинается только после завершения компиляции всех файлов проекта. Если сборка приложения или DLL не нужна, можно просто оборвать процесс, как только она началась.

Ну и "линковка" — гораздо более простой процесс, нежели компиляция с C++. Непонятно, что там может выполняться долго — разве что Link-time Code Generation.

В проекте точно нет каких-нибудь действий в Pre-Link Event?
Re[2]: компиляция без сборки
От: galileo Земля  
Дата: 16.06.22 21:32
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

G>>остстается либо сборка всего проета, либо компиляция отдельного файла


ЕМ>Что Вы называете "проектом", и какова конечная цель "компиляции без сборки"?


ох... не хотелось бы вдаваться в детали, проект состоит из множества VS C++ проектов, со множеством исполняемых файлов (exe) и библиотек
я помню раньше в VS была опция — Compile, но сейчас ее зачем то убрали, хорошо хоть осталась опция компиляции одного файла Ctrl-F7

и я надеялся что я не один кому этой функции не хватает

конечная цель "компиляции без сборки" — проверить что код всего проекта компилируется

ЕМ>Если под "проектом" имеется в виду Project в терминологии VS, а под "сборкой" — linking, то фаза сборки/линковки начинается только после завершения компиляции всех файлов проекта. Если сборка приложения или DLL не нужна, можно просто оборвать процесс, как только она началась.


сборка (build) включает в себя компиляцию и линковку

ЕМ>Ну и "линковка" — гораздо более простой процесс, нежели компиляция с C++. Непонятно, что там может выполняться долго — разве что Link-time Code Generation.


это зависит от количества кода и исполняемых файлов

ЕМ>В проекте точно нет каких-нибудь действий в Pre-Link Event?
Отредактировано 16.06.2022 21:47 свидетель безвиза . Предыдущая версия .
Re[3]: компиляция без сборки
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 17.06.22 11:12
Оценка: -1
Здравствуйте, galileo, Вы писали:

G>проект состоит из множества VS C++ проектов, со множеством исполняемых файлов (exe) и библиотек


G>я надеялся что я не один кому этой функции не хватает


Сложно представить, для чего она могла бы понадобиться.

ЕМ>>"линковка" — гораздо более простой процесс, нежели компиляция с C++. Непонятно, что там может выполняться долго — разве что Link-time Code Generation.


G>это зависит от количества кода и исполняемых файлов


При любом количестве кода, в каждом проекте VS есть только один целевой файл (исполняемый или библиотека), и собирается/линкуется он всегда быстрее, чем компилируются исходники.
Re[4]: компиляция без сборки
От: galileo Земля  
Дата: 17.06.22 22:11
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Сложно представить, для чего она могла бы понадобиться.


спасибо за попытку
Re[5]: компиляция без сборки
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 18.06.22 08:01
Оценка:
Здравствуйте, galileo, Вы писали:

ЕМ>>Сложно представить, для чего она могла бы понадобиться.


G>спасибо за попытку


Ну так для чего, в итоге-то? Что Вы получите, выполнив компиляцию всех проектов solution'а без их сборки, и как распорядитесь результатом?
Re[6]: компиляция без сборки
От: galileo Земля  
Дата: 18.06.22 09:51
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>>>Сложно представить, для чего она могла бы понадобиться.


G>>спасибо за попытку


ЕМ>Ну так для чего, в итоге-то? Что Вы получите, выполнив компиляцию всех проектов solution'а без их сборки, и как распорядитесь результатом?


это проверка на компиляцию кода и отсутствие ошибок проектов solution'а

что имеется сейчас:
1) компиляция одного файла (CTRL+F7) — быстро, возможноть проверки ошибок в файле, допускает наличие ошибок в зависимых файлах
2) сборка (F7) компиляция и линковка — долго, но все собирается и проверяется

что нужно:
1.5) компиляция без линковки — быстрее чем опция 2 но медленней 1, допукает ошибки на уровне линковщика — позволяет отловить ошибки компиляции в зависимых файлах
Re[7]: компиляция без сборки
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 18.06.22 10:15
Оценка:
Здравствуйте, galileo, Вы писали:

G>это проверка на компиляцию кода и отсутствие ошибок проектов solution'а


msbuild /target:Compile не годится?

Но вообще, я бы посмотрел, отчего линковка у Вас настолько медленная, что так напрягает. Если, конечно, тех проектов сотни, то неудивительно. Но тогда закономерно возникает вопрос, что там за зависимости, которые приводят к частой перекомпиляции всех исходников.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.