VC的编译器cl用法初步

13 篇文章 0 订阅

1 单个文件的编译

写一个简单的cpp程序,比如hello.cpp,现要求使用cl编译器来生成可执行的程序。cl是compiler的简称。最简单的用法为:

cl hello.cpp

然后会在当前目录下生成文件hello.obj、hello.exe,其中编译器生成的是 Common Object File Format (COFF) object (obj)文件,而linker生成的是可执行文件 (exe)。

如果想让生成的可执行文件采用不同的名字,则使用下面的编译选项:

cl /Ferob hello.cpp

然后会在当前文件夹下产生文件pairtest.obj、rob.exe文件。可见生成的可执行文件的名字已经改为我们需要的名字了。编译选项/Fe的作用就是更改生成的可执行文件的名字。注意新名字的后缀不要加exe,编译器会自动加上;同时新名字和/Fe之间不能有空格、冒号、或者等号之类的符号,这和g++编译器的用法是不同的。当然,上面编译命令中的斜杠/ (forward slash)也可改为-(dash),也能顺利进行编译,如下:

cl -Ferob hello.cpp

如果你想让生成的obj文件和exe文件都使用自己喜欢的名字,则使用下面的编译命令:

cl -Forob -Ferob hello.cpp

则会在当前文件夹下面生成文件rob.obj和rob.exe。编译选项-Fo用于命名生成的obj文件的名字。

关于编译选项更多的内容,请参见cl compiler options

上面编译选项,-Fe等后面都跟了一个参数 (argument),并且参数和选项间没有空间,或者其他的标识符。参数和选项间是否加空格取决于每个选项的具体规定。

VS2010还提供了一个连接器 (linker),其命令为link。如果你想将编译过程和链接过程分开来做,可以:

cl -c hello.cpp
link hello

即会在你的当前目录下面先产生文件hello.obj,然后产生hello.exe文件。注意,使用link命令的时候,不加后缀名的情况下,默认为obj文件。编译选项-c表示只编译,不做链接。

2 多个文件的编译

假设在当前文件夹下具有文件:NQueensPuzzle.h, NQueensPuzzle.cpp, testNqueens.cpp, 其中.h文件定义了一个类NQueensPuzzle的声明,文件NQueensPuzzle.cpp是该类的实现,文件testNqueens.cpp负责使用这个类。那么,就像使用g++编译一样的简单,如下:

cl -FetestNqueens testNqueens.cpp NQueensPuzzle.cpp

即在你的文件夹下会增加文件NQueensPuzzle.obj,testNqueens.obj,和文件testNqueens.exe。运行可执行文件即可得到你想要的结果。与上面编译命令对等的g++编译命令为:

g++ testNqueens.cpp NQueensPuzzle.cpp -o testNqueens

3 结束语

学习一门语言,当前需要先熟悉一种编译器的使用方法。正所谓“工欲善其事,比先利其器”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值