首页 > 编程知识 正文

终端编译执行c语言命令,devc编译器配置如何配置

时间:2023-05-03 05:30:03 阅读:165214 作者:3682

设置msvc命令行环境后,可以使用命令行编译小示例程序,如《配置msvc命令行环境》中所述。

如果需要向别人公开编译脚本,或者需要测试多个VC版本,还需要一些技巧。

首先请想起需求:

1 .向他人公开编译脚本

我们需要将客户对计算机配置(主要是环境变量)的依赖降至最低。

2 .测试多个VC版本

为了便于切换,应尽可能避免使用本地计算机上的全局(系统或当前用户)环境变量。

3 .编写脚本对自己也要方便

因为使用命令行的目的很方便。

如果不方便的话,最好使用IDE。 是保险

——成功创建的工作区文件、解决方案文件、工程文件和项目文件对安装VC的客户一定可用。

(正确意味着它不依赖于本地计算机上的设置,例如全局搜索路径。 )

一.对VC8、VC9

按如下方式编写脚本:

' call % vsxxcomntools % vs vars 32.bat '。

rem执行适当的cl命令。

这样就可以满足以上三个要求。

1 .客户端一定有正确的VSXXCOMNTOOLS变量——。 除非他安装了合适的VC版本。

2 .可执行cl的命令单独放在一个脚本中,假设称为cpl.bat,执行与VC8、9相同的编译过程。

对于不同的VC版本,只要能够在执行cpl.bat之前执行“call % vsxxcomntools % vs vars 32.bat”即可。 例如:

------vc8.bat-------vc8.bat

call ' % v s80 comn tools % vs vars 32.bat '

call cpl.bat

------vc9.bat-------vc9.bat

call ' % vs 90 comn tools % vs vars 32.bat '

call cpl.bat

3 .编译过程均在单独的cpl.bat中,管理维护也比较方便。

二.对VC6

二. 1、使用dsw和dsp文件

这意味着您将使用IDE提供的工作区文件和工程文件。

这是最安全的——,只要客户安装了VC6,无论是否设置环境变量都可以使用。

二. 2、假设客户有正确的系统或当前用户的环境变量

在中,不设置其他内容,而是直接使用与VC8、9相同的编译脚本。 例如:

------VC6.bat-------VC6.bat

call cpl.bat

如果假设不成立:

1 .客户重新安装VC6

2 .如果客户手动添加环境变量,请参考《其他VC版本》。

二. 3、使用VCvars32.bat(forVC6 )

2.3.1使用msdev dir变量

如果在VC6安装期间选择“注册环境变量”,则除了相应的Path、include、lib之外,还会设置MSDevDir。

可以按以下方式使用:

------VC6.bat-------VC6.bat

call ' % msdev dir %//./vc98/tw DSB/VC vars 32.bat '

call cpl.bat

有两点需要注意:

1 .依赖于具有正确的VC6环境变量的客户端。

与“二.2.2”不同,没有出现“二.2.3”的缺陷。

2.MSDevDir和vcvars32.bat的相对位置不一定是如上所述写的!

安装VC6时,用户首先选择Common文件夹的位置。

安装后,与MSDevDir的关系如下。

Common/MSDev98

然后,让用户选择VC的位置。 可以和上面不一样。

二.3. 2直接使用VC vars 32.bat

例如:

call VCVARS32.BAT

call cpl.bat

与“2.2”的对比:

1 .客户在安装VC6时选择了“注册环境变量”

Path包含prefix/Microsoft visual studio/vc98/kndxrk的值。

VCVARS32.BAT也正好位于这个目录中,执行成功了。

此外,即使在这种情况下,再次调用VCVARS32.BAT也不一定是多余的。

这样可以避免“2.2”中提到的缺陷,因此最终需要使用VC6而不是其他版本的VC进行编译。

2 .客户安装VC6时没有选择“注册环境变量”

相对于“2.2”,客户需要做的工作较少。 将“prefix/Microsoft visual studio/vc98/kndxrk”添加到“Path”中即可。

不需要添加2~5个变量。

我认为这是最理想的不使用IDE的方法。

三.总

1. 将总编译逻辑写在一个单独脚本如cpl.bat中。

2. 对于VC8、9, 利用VSXCOMNTOOLS变量, 如下:

-------- vc8.bat --------

call "%VS80COMNTOOLS%vsvars32.bat"

call cpl.bat

-------- vc9.bat --------

call "%VS90COMNTOOLS%vsvars32.bat"

call cpl.bat

注意:是上面是VS而不是VC。

3. 对于VC6

3.1 使用dsw和dsp文件

这是最保险的方式。

但是不能利用已经写好的cpl.bat文件, 需要单独维护。

3.2 先直接使用VCVARS32.BAT

-------- vc6.bat --------

call VCVARS32.BAT

call cpl.bat

这样的好处是,可以仅维护单独的cpl.bat, 客户上有多个VC版本也能正确编译——如果他VC6的环境变量正确。

如果不正确, 客户需要做的工作很少, 加入一个环境变量而已。

四、 示例

以下使用《此下载打包代码。

1. 源代码

-------- _MSC_VER/_MSC_VER.cpp --------

内容见《预定义_MSC_VER宏》或者打包代码中。

2. 总编译逻辑

-------- _MSC_VER/vc/cpl.bat --------

cl ../_MSC_VER.cpp /W4

pause

3. 为不同VC版本编写一个简单的调用脚本

-------- _MSC_VER/vc6/vc6.bat --------

call vcvars32.bat

call ../vc/cpl.bat

-------- _MSC_VER/vc8/vc8.bat --------

call "%VS80COMNTOOLS%vsvars32.bat"

call ../vc/cpl.bat

-------- _MSC_VER/vc9/vc9.bat --------

call "%VS90COMNTOOLS%vsvars32.bat"

call ../vc/cpl.bat

补充:

——关于脚本和批处理。

文章里提到的脚本,都是dos下的bat批处理文件, 功能很弱。

这里只是说明一种方便的使用多个VC版本的机制而已——就是“三、总结”中的 vc6.bat、vc8.bat、vc9.bat。

它们先使用相应的VCVARS32.bat注册局部于进程的环境, 然后调用cpl.bat。

实际上, cpl.bat才是编译的逻辑, 如果dos的bat批处理不能完成其功能, 同样可以使用其他的工具,如makefile。所以本文总是说“编译脚本”, 而不是“编译批处理”, 虽然本文的编译脚本就是简单(不含一点逻辑的)的批处理文件。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。