之前编译过一次clang,并且修改代码定制了编译选项,有计划继续读一下clang的代码,但是最终没有继续下去。前不久又偶尔围观了一下clang的代码,所以又准备编一次。
现在官网上介绍说用CMake,生成其它编译工具能理解的配置文件,然后编译(和以前不同了)。我生成了MinGW的make,然后开始编译。但是,过一会儿就报错说std::thread不存在。眼睛一亮,这说明代码使用了c++11。从错误信息可以看出来,CMake配置时通过PATH环境变量检测到了D:\DevSoft\MinGW-w64_4.9.2,由于这不是官方的,所以把该目录重命名然后重新配置(我的PATH中有两个MinGW),使得D:\DevSoft\MinGW被配置为编译环境(4.8.1)。编译后继续出错。
1. 简单查了一下CMake的语法,发现CMake有gui工具,于是使用gui工具配置一次,还是不行(表示CMake挺赞)。
2.接着在gui工具可以直接指定编译器,仍然不行。尝试一些其它配置,比如vs,显然因为我没装vs,失败,其它的编译环境,比如ninja(PATH中有ninja),也失败。
3.怀疑编译时没有启用--std=c++11,尝试了环境变量中设置CXXFLAG,以及CMake的gui工具中指定c++1y,还有在llvm中的CMakeLists.txt中添加lset(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++11")后编译都没有解决问题。后来发现