VS2010 使用命令行编译的方法



VS做的很智能,一个F7就完成了预处理、编译、链接的所有工作。但是当工程比较大,使用的文件模块比较多, 一旦出现编译错误定位问题时就比较困难。因此,有时候需要对每个模块单独编译,就像Linux下编写的 makefile文件一下,分别编译每一个.o目标文件然后再链接成为一个.exe可执行程序。最近为了验证一段代码, 需要在不同的编译器下编译对比,就顺便总结下在VS下使用命令行分别编译程序的方法。

下面总结一些常用的命令:

通过快捷方式Visual Studio Command Prompt (2010)可以打开VS的命令行界面。

(1) 在命令行提示符窗口中输入:cl  /?   或者   cl -help 可以查看cl所有的命令选项。

(2) 在默认情况下cl编译完后会自动调用link进行链接,可以使用/c选项阻止链接。

(3) 编译一个文件命令:cl /FeMyapp 1.cpp,然后输入程序名Myapp执行程序。(注意1.h在本地,可以通过/I选 项指定头文件路径)

(4) 编译多个文件命令:cl /FeMyapp 1.cpp 2.cpp 3.cpp,然后输入程序名Myapp执行程序。

(5) 只输出 .i 预编译文件命令:cl /FiA /P A.cpp,然后会生成 A.i 预编译文件。这个方法类似Linux下的  gcc -E A.cpp -o A.i 命令。此命令的主要作用是用于检查未定义情况的错误。 

(6) 只输出 .o 目标文件命令:cl /FoA /c A.cpp,然后会生成 A.obj 目标文件,类似Linux下的 .o 文件。注 意这里应该带上 /c 选项,原因见(2),即默认情况下,cl会自动对编译好的目标文件进行链接,如果此时,所 编译的目标文件引用了其他目标文件中的符号的话,就会出现链接错误。 

暂时先记录这么多,用到时再补充。





VS做的很智能,一个F7就完成了预处理、编译、链接的所有工作。但是当工程比较大,使用的文件模块比较多, 一旦出现编译错误定位问题时就比较困难。因此,有时候需要对每个模块单独编译,就像Linux下编写的 makefile文件一下,分别编译每一个.o目标文件然后再链接成为一个.exe可执行程序。最近为了验证一段代码, 需要在不同的编译器下编译对比,就顺便总结下在VS下使用命令行分别编译程序的方法。

下面总结一些常用的命令:

通过快捷方式Visual Studio Command Prompt (2010)可以打开VS的命令行界面。

(1) 在命令行提示符窗口中输入:cl  /?   或者   cl -help 可以查看cl所有的命令选项。

(2) 在默认情况下cl编译完后会自动调用link进行链接,可以使用/c选项阻止链接。

(3) 编译一个文件命令:cl /FeMyapp 1.cpp,然后输入程序名Myapp执行程序。(注意1.h在本地,可以通过/I选 项指定头文件路径)

(4) 编译多个文件命令:cl /FeMyapp 1.cpp 2.cpp 3.cpp,然后输入程序名Myapp执行程序。

(5) 只输出 .i 预编译文件命令:cl /FiA /P A.cpp,然后会生成 A.i 预编译文件。这个方法类似Linux下的  gcc -E A.cpp -o A.i 命令。此命令的主要作用是用于检查未定义情况的错误。 

(6) 只输出 .o 目标文件命令:cl /FoA /c A.cpp,然后会生成 A.obj 目标文件,类似Linux下的 .o 文件。注 意这里应该带上 /c 选项,原因见(2),即默认情况下,cl会自动对编译好的目标文件进行链接,如果此时,所 编译的目标文件引用了其他目标文件中的符号的话,就会出现链接错误。 

暂时先记录这么多,用到时再补充。