Я недавно получил become aware функции инкрементной компоновки gcc, и я хочу ее использовать. Дело в том, что я не пишу свой собственный Makefile - я использую CMake. Зависимости между файлами и целевые объекты по существу одинаковы, но я хочу, чтобы CMake попытался их получить, используя инкрементную привязку, а не ссылку с нуля?Могу ли я заставить CMake генерировать Makefile, используя gcc инкрементную привязку?
Кроме того, если это возможно, чтобы это даже для файлов, в библиотеках, то есть, когда вы перекомпилировать один .o
в пределах .a
файла, вместо того, что весь файл будет пересмотрен при компоновке исполняемого файла, единственный .o
в ней пересматривается только/повторно.
Для иллюстрации предположим, что мой CMakeLists.txt
имеет:
add_executable(
foo
a.cpp
b.cpp
c.cpp
)
Прямо сейчас, когда a.cpp
изменения, мы получаем компиляцию a.cpp
->a.o
то регулярная связь a.o b.o c.o
->foo
. Я хочу, чтобы это было a.o foo something_else_maybe -> foo
Примечание: Этот вопрос не о MSVC и собственных дополнительных возможностей увязывания.
«Инкрементное связывание» - вы имеете в виду 'ld -r'? Это сильно отличается от того, что обычно называется добавочной связью в других компиляторах. Вы хотите использовать его для ускорения связи? Непонятно, как вы собираетесь это сделать, чтобы это помогло, если бы вы могли добавить пример Makefile с примером. – yugr
Я имел в виду это в том смысле, о котором я спросил [этот вопрос] (http://stackoverflow.com/questions/42245133/is-it-possible-to-perform-differential-linking). Я добавлю образец Makefile. – einpoklum