如何不使用CMake查看C++编译过程生成的中间文件
在Windows下不使用CMake查看C++编译中间文件的方法
Windows下常用C++编译器分为MSVC(Visual Studio自带)和MinGW/GCC两类,无需CMake也能通过显式参数或IDE设置保留并查看中间文件,具体方法如下:
一、MSVC编译器(含Visual Studio IDE)
命令行方式(cl.exe)
- 生成预处理文件
.i:使用/P参数,命令示例:
执行后会在当前目录生成cl /P test.cpptest.i。 - 生成汇编文件
.asm:使用/Fa参数,若仅需汇编文件不编译目标文件,可搭配/c(只编译不链接):
会生成cl /Fa test.cpp /ctest.asm和test.obj(MSVC的目标文件后缀为.obj而非.o)。 - 保留目标文件
.obj:直接添加/c参数即可,命令示例:
生成的cl /c test.cpptest.obj会在当前目录或指定输出路径下。
Visual Studio IDE方式
- 右键项目 → 属性 → 配置属性 → C/C++ → 输出文件
- 将「预处理到文件」设为「是」,编译后会在中间目录生成
.i文件; - 将「汇编输出」设为「汇编代码(/Fa)」,生成
.asm文件;
- 将「预处理到文件」设为「是」,编译后会在中间目录生成
- 目标文件
.obj默认存放在项目的中间目录,可在「配置属性 → 常规」中查看该路径,直接前往文件夹即可找到。
二、MinGW/GCC编译器
命令行方式(g++/gcc)
- 生成预处理文件
.i:使用-E参数指定仅预处理,命令示例:g++ -E test.cpp -o test.i - 生成汇编文件
.asm:使用-S参数指定仅生成汇编代码:g++ -S test.cpp -o test.asm - 保留目标文件
.o:使用-c参数仅编译不链接:g++ -c test.cpp -o test.o - 一次性生成所有中间文件:使用
-save-temps参数,执行后会在当前目录生成test.i(预处理)、test.s(汇编,可手动改后缀为.asm)、test.o(目标文件):g++ -save-temps test.cpp
注意事项
之前找不到中间文件,通常是因为编译器默认将临时中间文件存放在系统临时目录或编译后自动删除,通过上述显式参数设置,可强制编译器将文件保留在指定路径(默认当前目录)。
内容的提问来源于stack exchange,提问作者stardep
相关产品推荐
相关产品推荐

