Я пытаюсь применить Оптимизацию времени связи с LLVM в проекте CMake, который создает общую библиотеку. Мой вопрос почти такой же, как этот:LTO с LLVM и CMake
Switching between GCC and Clang/LLVM using CMake.
Однако ответы больше не применимы, так как llvm-ld
нет в новых версиях. В командной строке, я бегу следующие команды, чтобы получить LTO (Предполагая, что есть только 2 .cpp
файлы):
компилировать байт-код:
clang++ -c FirstClass.cpp -O3 -flto -o FirstClass.bc
clang++ -c SecondClass.cpp -O3 -flto -o SecondClass.bc
Ссылка байт-код:
llvm-link FirstClass.bc SecondClass.bc -o unoptimized.bc
Оптимизировать байт код:
opt -O3 unoptimized.bc -o optimized.bc
Преобразование байт кода в общий объект:
clang++ -shared optimized.bc -o libTest.so
Может кто-нибудь, пожалуйста, скажите мне, как запустить CMake дополнительные шаги?
Это может быть работа для [ 'add_custom_command'] (https://cmake.org/cmake/help/v3 .0/command/add_custom_command.html) cmake ... Что-то вроде 'add_custom_command (OUTPUT libTest.so COMMAND clang ++ -shared optimized.bc -o libTest.so MAIN_DEPENDENCY optimized.bc)' См. Http://stackoverflow.com/ вопросы/13470499/CMake-надстройка на заказ команда-с зависимостями-с-а-другого-каталога – francis