llvm-config作为LLVM的一个工具,是非常有用的,官方文档(http://llvm.org/docs/CommandGuide/llvm-config.html)关于它的介绍如下:
llvm-config makes it easier to build applications that use LLVM. It can print the compiler flags, linker flags and object libraries needed to link against LLVM.
这里介绍的非常清楚,llvm-config使得使用LLVM去构建自己的应用更加的简单。之所以可以更加简单,是因为它可以打印出编译器flags、连接器flags以及需要连接的LLVM库。简单点的说,就是llvm-config可以获取系统中LLVM的所有相关信息,这些信息可以方便的用于构建基于LLVM的项目。只是这么说的话,看起来并不明显,下面我就给出一个实例来。
LLVM_CONFIG = llvm-config
LLVM_CXXFLAGS += $(shell $(LLVM_CONFIG) --cxxflags)
LLVM_LDFLAGS := $(shell $(LLVM_CONFIG) --ldflags)
LLVM_LIBS = $(shell $(LLVM_CONFIG) --libs bitwriter core support)
llvm_model_src = ModuleMaker.cpp
test_model:
g++ $(llvm_model_src) $(LLVM_CXXFLAGS) $(LLVM_LIBS) $(LLVM_LDFLAGS) -lpthread -ldl -o ModuleMaker
这是一个Makefile。它是一个例子ModuleMaker的编译文件。这个ModuleMaker例子本身是LLVM源码中llvm/examples/ModuleMaker/目录下的一个例子,它演示的如果凭空构建一个LLVM IR的Module。我这里写了这个Makefile以后,可以在已经安装LLVM的系统(Linux)上单独的编译这个例子,而不需要依赖LLVM的源码,也不再需要在LLVM源码中编译这个例子。完整的包含Makefile的ModuleMaker例子的代码: