我可以使用CMake分阶段编译程序吗?

时间:2017-10-19 13:23:26

标签: cmake clang llvm llvm-ir

我正在使用LLVM编译器来执行某些分析。我还有一个测试应用程序,我写过我使用CMake构建。我想分阶段编译测试应用程序:

  1. 将测试应用程序的所有源文件编译为LLVM bitcode。
  2. 使用llvm-link将所有bitcode文件链接在一起。
  3. 将此链接的bitcode文件编译为实际的二进制文件(使用额外的标记来运行我的分析)。
  4. 例如,如果我的程序test包含3个文件,foo.cbar.cbar.h

    Normal compilation:
        clang -I. -c foo.c // generates foo.o
        clang -I. -c bar.c // generates bar.o
        ld -lc -lgcc -o test foo.o bar.o // links foo.o and bar.o
    
    Bitcode compilation & linking:
        clang -I. -c -emit-llvm foo.c // generates foo.bc
        clang -I. -c -emit-llvm bar.c // generates bar.bc
        llvm-link -o test.bc foo.bc bar.bc // links foo.bc and bar.bc
        clang -I. -o test test.bc // generates test
    

    正如我所说,我已经编写了CMake文件,可以正常构建和编译测试应用程序(即,在一个阶段)。

    通过添加自定义命令和/或目标的某种组合,是否有可能实现这样的目标?或者我应该继续使用当前使用bash / Python脚本来运行此过程的方法吗?

0 个答案:

没有答案