工具:
Cmake、DevCPP。
过程:
1.安装Cmake,并添加到环境变量中;若有安装git工具,需要把git/bin/这个环境变量删掉,如果有的话。
2.安装DevCPP,为什么需要这个?因为它可以省去MinGW相关的安装,这个开发工具自带C、C++编译工具,
以及make程序。 把这个程序的工具也添加到环境变量:
3.配置Cmake。 启动Cmake-gui,设置源码路径,创建输出文件夹,并设置数据路径:
然后后提示设置,设置为MinGW Makefiles,并使用自定义的编译器,
C的编译器路径:/Dev-Cpp\MinGW64\bin\gcc.exe
C++编译器路径:/Dev-Cpp\MinGW64\bin\g++.exe
另一个不用配置。
然后在search中输入 CMAKE_MAKE_PROGRAM ,设置它的值为/Dev-Cpp\MinGW64\bin\mingw32-make.exe
search中输入test,把所有test选项的 √ 都去掉。
点击Add Entry ,输入DLLVM_INCLUDE , 类型选择 string, 值填写OFF 。
点击Add Entry ,输入TESTS , 类型选择 string, 值填写OFF 。
4. 点击configure , 完成后点击generate。
5.进入到配置的build目录,在这个目录启动cmd,开始编译:
mingw32-make.exe -j4
遇到两个错误:
I.
P:\ollvm\ollvm\lib\Support\Chrono.cpp:29:15: error: '::localtime_s' has not been declared
int Error = ::localtime_s(&Storage, &OurTime);
解决:
把\ollvm\lib\Support\Chrono.cpp 对应的那个代码注释。
II.
undefined reference to SHGetKnownFolderPath
把 P:\ollvm\ollvm\lib\Support\Windows\Path.inc 文件中的SHGetKnownFolderPath函数调用注释掉。
其他问题:
clang找不到Include 目录,编写一个helloworld程序都找不到stdio.h ……
各种方法都试了,比如下载LLVM,发现include下没有stdio.h;
下载MinGW,设置Windows环境变量Include为对应的MinGW的include目录也没用……
后来用clang -v 输出编译过程,发现了它硬编码的头文件搜索路径……
再后来,思考下,clang --help 查看了帮助,发现了-I 选项,于是乎:
P:\devCPP\Dev-Cpp\MinGW64\bin\ld.exe: cannot find -lgcc_eh
P:\devCPP\Dev-Cpp\MinGW64\bin\ld.exe: cannot find -lgcc_eh
clang.exe: error: linker command failed with exit code 1 (use -v to see invocation)
还是出错……脸黑了……在试了下用clang++编译:
clang++ -mllvm -bcf -I "P:\devCPP\Dev-Cpp\MinGW64\include" -I "P:\devCPP\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include" -I "P:\devCPP\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include" p:\test\test.cpp -o t.exe -v
铛铛砀,混淆后的exe输出了……Oh yeah ,终于有了一款Windows下的混淆编译工具了……Nice……