我想在CMake項目上應用鏈接時間優化和LLVM,創建一個共享庫。我的問題幾乎與這一個相同: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)'See http://stackoverflow.com/問題/ 13470499/cmake的加定製命令與 - 依賴 - 從-A-不同的目錄 – francis