Код: Выделить всё
set(CMAKE_CXX_FLAGS "-fuse-ld=lld")
Это приводит к настройке «LLD», добавленной также в команду Linking в файле link.txt, которая генерируется Cmake в каталоге сборки:
Код: Выделить всё
"C:\Program Files\CMake\bin\cmake.exe" -E rm -f CMakeFiles\UnitTests.dir/objects.a C:\Tools\mingw64\bin\ar.exe qc CMakeFiles\UnitTests.dir/objects.a @CMakeFiles\UnitTests.dir\objects1.rsp C:\Tools\mingw64\bin\c++.exe -fuse-ld=lld -g -O1 -Wl,--whole-archive CMakeFiles\UnitTests.dir/objects.a -Wl,--no-whole-archive -o ..\bin\UnitTests.exe -Wl,--out-implib,libUnitTests.dll.a -Wl,--major-image-version,1,--minor-image-version,0 @CMakeFiles\UnitTests.dir\linkLibs.rsp
Это работает, но проблема в том, что, как вы видите, это 3 команды: 1) RM, который быстр, 2) ar.exe, который является медленным, 3) вызов линкера C ++, который снова быстро. Таким образом, все файлы .o находятся в списке «Objects.a», которые предоставляются команде «ar.exe». Затем линкер воспринимает его как архив и создает двоичный.
Код: Выделить всё
C:\Tools\mingw64\bin\g++.exe -fuse-ld=lld -g -O1 @CMakeFiles\UnitTests.dir\objects1.rsp -o ..\bin\UnitTests.exe -Wl,--out-implib,libUnitTests.dll.a -Wl,--major-image-version,1,--minor-image-version,0 @CMakeFiles\UnitTests.dir\linkLibs.rsp
Связывание снова очень быстро, когда я пропускаю AR.Exe. Я не вижу и недостатков. Это для меня неясно. < /P>
Я не нашел никакой информации о том, что я могу изменить. Также я не слишком много пробовал, потому что я действительно не знаю, с чего начать. Честно говоря, я пользователь Cmake со вчерашнего дня: D, так что не вините меня в моих пропущенных знаниях. Я надеюсь найти здесь решение.
Подробнее здесь: https://stackoverflow.com/questions/784 ... ad-of-ar-c