Tôi đang cố gắng áp dụng Tối ưu hóa thời gian liên kết với LLVM trên một dự án CMake, tạo thư viện được chia sẻ. Câu hỏi của tôi khá giống với câu hỏi này:LTO với LLVM và CMake
Switching between GCC and Clang/LLVM using CMake.
Tuy nhiên, các câu trả lời dường như không còn được áp dụng nữa, vì llvm-ld
không có trong các phiên bản mới. Trên dòng lệnh, tôi chạy các lệnh sau để có được LTO (Giả sử chỉ có 2 .cpp
files):
Compile để mã byte:
clang++ -c FirstClass.cpp -O3 -flto -o FirstClass.bc
clang++ -c SecondClass.cpp -O3 -flto -o SecondClass.bc
liên kết mã byte:
llvm-link FirstClass.bc SecondClass.bc -o unoptimized.bc
Tối ưu hóa mã byte:
opt -O3 unoptimized.bc -o optimized.bc
Chuyển đổi mã byte thành đối tượng được chia sẻ:
clang++ -shared optimized.bc -o libTest.so
Ai đó có thể cho tôi biết làm thế nào để CMake chạy các bước bổ sung?
Nó có thể là một công việc cho [ 'add_custom_command'] (https://cmake.org/cmake/help/v3 .0/command/add_custom_command.html) của cmake ... Một cái gì đó giống như 'add_custom_command (OUTPUT libTest.so COMMAND clang ++ -shared được tối ưu hóa.bc -o libTest.so MAIN_DEPENDENCY optimize.bc)' Xem http://stackoverflow.com/ câu hỏi/13470499/cmake-add-custom-command-with-dependencies-from-a-thư mục khác – francis