方法一
1. 参照如下内容(根据你的系统情况,作出相应修改),编写一个批处理文件,假定命名为vs.bat。
@echo off
set PATH=C:\WINNT\SYSTEM32;D:\VS.NET\VC7\BIN;D:\VS.NET\COMMON7\IDE
set INCLUDE=D:\VS.NET\VC7\INCLUDE
set LIB=D:\VS.NET\VC7\LIB
说明:
a. 以上各环境变量字符串大小写无所谓,但字符之间应避免出现空格。
b. 之所以加上C:\WINNT\SYSTEM32,目的是为了便于使用help之类的扩展命令,和本讨论主题并无直接关系。
2. 打开一个“命令提示符”窗口,执行如下命令:
C:\>start c:\vc7.bat (根据你的文件路径,作出相应修改)
即会创建一个新的“命令提示符”窗口,在这个窗口内,便可进行C++程序编译工作。具体用法,后面再说。
这种设置方法的缺点在于,只能在步骤2新创建的“命令提示符”窗口里进行编译,一旦关闭该窗口,即需要重新执行步骤2。
方法二
1. 在桌面“我的电脑”图标上,单击右键,然后执行“属性”菜单命令,或者,依照“开始”-“设置”-“控制面板”步骤,双击“系统”图标,都会弹出“系统特性”对话框。 选中“高级”页面,点击“环境变量”按钮,即会出现图1所示的环境变量设置窗口。(说明:任何用户都可以增/删/改用户环境变量,但只有 管理员才能增/删
/改系统环境变量。对于特定计算机的每个用户来说,用户环境变量可以不相同)
图1
2. 你可以设置为用户环境变量,也可以设置为系统环境变量。参考以下内容,并参见图2所示界面。(根据你系统的情况,作出相应调整)
PATH=C:\WINNT\SYSTEM32;D:\VS.NET\VC7\BIN;D:\VS.NET\COMMON7\IDE
INCLUDE=D:\VS.NET\VC7\INCLUDE
LIB=D:\VS.NET\VC7\LIB
图2
和方法一不同的是,采用这种方式,一旦设置完毕,便可一劳永逸。无需重新启动计算机,现在就打开一个“命令提示符”窗口,执行cl命令试试。
说明:假如你的操作系统是Windows 95/98,可以参照上面描述,直接编辑autoexec.bat文件。
三.微软C/C++编译器命令行模式用法
微软C/C++编译器编译选项数目众多,在“命令提示符”窗口键入cl /?即可查看完整列表
(见附录1)。比如说,/GX启用C++异常处理机制,/GR启用C++ RTTI,等等。在此不打算
详细讨论这些编译选项用法。
以下是我的测试目录f:\vstest中的一个样例文件:
//1.cpp
#include <iostream>
using namespace std;
void main()
{
cout << "Hello Royal"<<endl;
}
你现在可以进入该目录执行如下编译命令:
F:\vstest>cl /GX 1.cpp
运行程序,即会产生如下输出:
Hello Royal
编译多个文件也很简单,参见下面例子:
//2.cpp
#include <iostream>
#include "3.cpp"
using namespace std;
void main()
{
CTest ct("Hello www.royaloo.com");
cout << ct.str << endl;
}
//3.cpp
#include <string>
using namespace std;
class CTest
{
public:
CTest(string strValue): str(strValue){}
string str;
};
执行如下编译命令即可:
F:\vstest>cl /GX 2.cpp 3.cpp
也可以这样编译,以指定生成的exe名字:
F:\vstest>cl /GX /FeHello.exe 2.cpp 3.cpp (生成Hello.exe)
运行程序,输出结果如下:
Hello www.royaloo.com
四.Visual C# .NET编译器命令行模式用法
在“命令提示符”窗口键入csc /?即可查看完整编译选项列表(见附录2)。在此
不打算
详细讨论这些编译选项用法。不过,要说明的是,你之所以无需使用/r:编译选项
引用相
关库文件,就可以编译绝大多数程序,原因在于C#编译器默认引用了mscorlib.
dll以及
csc.rsp文件中指定的程序库。该文件内容如下:
# This file contains command-line options that the C#
# command line compiler (CSC) will process as part
# of every compilation, unless the "/noconfig" option
# is specified.
# Reference the common Framework libraries
/r:Accessibility.dll
/r:Microsoft.Vsa.dll
/r:System.Configuration.Install.dll
/r:System.Data.dll
/r:System.Design.dll
/r:System.DirectoryServices.dll
/r:System.dll
/r:System.Drawing.Design.dll
/r:System.Drawing.dll
/r:System.EnterpriseServices.dll
/r:System.Management.dll
/r:System.Messaging.dll
/r:System.Runtime.Remoting.dll
/r:System.Runtime.Serialization.Formatters.Soap.dll
/r:System.Security.dll
/r:System.ServiceProcess.dll
/r:System.Web.dll
/r:System.Web.RegularExpressions.dll
/r:System.Web.Services.dll
/r:System.Windows.Forms.Dll
/r:System.XML.dll
可见,它引用了许多.NET标准库,假如没有充足的理由,就不要修改这个配置文件
!
但我修改了我机器上的csc.rsp文件,它的尾部多了这两行:
#NUnit is a unit-testing framework for all .Net languages
/r:d:\Nunitv2.0\bin\nunit.framework.dll
注意,文件路径中不可有空格。例如,Nunit2.0默认安装主目录为Nuint v2.0,假
如不做
必要的更改(我改成了Nunitv2.0),将无法成功引用nunit.framework.dll,并将
导致整
个csc命令行编译器无法使用,小心!
假如要取消对mscorlib.dll或csc.rsp引用的话,可以使用/nostdlib或/noconfig
编译选
项。
以下是我的测试目录f:\vstest中的一个样例文件:
//4.cs
using System;
namespace _4
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
Console.WriteLine("Hello Royal");
}
}
}
执行如下编译命令:
F:\vstest>csc 4.cs
运行程序,即输出:
Hello Royal
以下是编译多个文件的例子:
//5.cs
using System;
using _6;
namespace _5
{
class Class5
{
[STAThread]
static void Main(string[] args)
{
Class6 c6 = new Class6(