我正在尝试在使用CMake创建共享库的项目中,使用LLVM进行链接时优化(Link Time Optimization)。我的问题与此问题几乎相同。
然而,由于新版本中已经没有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
的工作... 类似于add_custom_command(OUTPUT libTest.so COMMAND clang++ -shared optimized.bc -o libTest.so MAIN_DEPENDENCY optimized.bc)
参见https://dev59.com/R2Yr5IYBdhLWcg3ws8NT - francis