• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 16,  comments - 34,  trackbacks - 0

            有些時候使用命令行而不是IDE去編譯源代碼會比較方便。
            而在命令行下使用msvc的編譯器——cl, 需要為其配置環境



            一、 環境變量測試

            測試cl的環境是否配置妥當, 可以執行如下測試:
            win鍵+R 啟動運行 -> 輸入cmd(winnt系列)或者command(win95系列) -> 回車, 打開命令行窗口。
            鍵入"cl"并回車, 如果有類似如下的輸出 :

            --------------------------------------------------------------------------------
            Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
            Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

            usage: cl [ option... ] filename... [ /link linkoption... ]
            --------------------------------------------------------------------------------
            Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86
            Copyright (C) Microsoft Corporation.  All rights reserved.

            usage: cl [ option... ] filename... [ /link linkoption... ]
            --------------------------------------------------------------------------------
            用于 80x86 的 Microsoft (R) 32 位 C/C++ 優化編譯器 15.00.30729.01 版
            版權所有(C) Microsoft Corporation。保留所有權利。

            用法: cl [ 選項... ] 文件名... [ /link 鏈接選項... ]

            --------------------------------------------------------------------------------

            一般來說, 就可以在命令行下使用cl了。

            cl文件版本與VS版本、VC產品版本、_MSC_VER宏的對應關系如下

            VS版本

            VC產品版本號

            cl文件版本號

            _MSC_VER宏的值

            98

            6.x

            12.x

            1200

            2005

            8.x

            14.x

            1400

            2008

            9.x

            15.x

            1500




            二、 測試失敗

            如果出現:
            1. “cl不是內部或外部命令,也不是可運行的程序或批處理文件。”
            說明cl不在Path環境變量中。

            2. 找不到xxx.dll。
            cl在Path環境變量中, Path中缺少必要的dll的路徑。

            3. 上述測試通過, 但是在編譯時出現找不到頭文件或者庫。
            說明Path環境變量中有cl和必要dll的路徑, 但是仍缺少其他一些環境變量。

            這些情況, 都需要進一步配置環境變量。



            三、 配置環境變量

                    三.1 、讓安裝包幫助注冊環境變量

            VC6在安裝的時候,會彈出一個對話框,讓你選擇是否注冊VC6的環境變量。如下:

            For your convenince, the environment variables required to run build tools from a command prompt are saved in the VCVARS32.BAT in your BIN directory

            (復選框) Register Environment Variables

            Turn on this option to register environment variables for running Visual C++ tools from the command line.

            默認復選框是沒有選中的。
            如果選中, 安裝完畢后就會添加必要的環境變量。


            所以, 一個辦法是重新安裝VC6(反正很小,相對于VC8、9安裝十分快速)。


                    三.2 、手工添加環境變量

            以VC6舉例,我們可以在 :“我的電腦” -> “屬性” -> “高級” -> “環境變量”中添加如下變量:

            %Path%="prefix\Microsoft Visual Studio\VC98\Bin";%Path%
            cl.exe所在路徑。

            %include%="prefix\Microsoft Visual Studio\VC98\Include";%include%
            %lib%="prefix\Microsoft Visual Studio\VC98\Lib";%lib%
            C/C++以及Platform SDK

            %include%="prefix\Microsoft Visual Studio\VC98\MFC\Include";%include%  
            %lib%="prefix\Microsoft Visual Studio\VC98\MFC\Lib";%include%
            MFC

            %include%="prefix\Microsoft Visual Studio\VC98\ATL\Include";%include%
            ATL

            (其中的prefix是安裝目錄的前綴)之后就可以在命令行中使用cl了。


            同時, VC6、8、9都提供了一個批處理vcvars32.bat
            我們可以查看相應的vcvars32.bat最終做了什么工作,而手工加入需要的變量。
            下內容摘自我機器上的vsvars32.bat(VC8、9的vcvars32.bat最終調用它們):
            vc8

            vc9

            可以根據它們,給VC8、9設置環境變量。


                  三.3 、使用vcvars32.bat

            上面提到vcvars32.bat,它們的位置如下:

            VC6  prefix\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT
            VC8  prefix\Microsoft Visual Studio 8\VC\bin\vcvars32.bat
            VC9  prefix\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat

            需要注意的是: 這些批處理文件只會在當前進程中設置(局部的)環境變量,也就是說:

            1. 用cmd(或者command)打開的命令行窗口中, 運行某個vcvar32.bat一次。
            那么當前命令行窗口中就可以正常使用cl,直到關閉。

            2. 寫批處理文件需要使用call prefix\vcvars32.bat,而不是直接啟動vcvars32.bat。
            前者為當前進程(cpl.bat創建的進程)添加局部于進程環境變量。
            后者啟動一個進程, 為其加入環境變量, 然后該進程立即退出——沒有任何作用。


                  三.4、 使用VSXXCOMNTOOLS變量(VC8、9)

            對于VC8、9有另一種方式——不注冊全局的(系統或當前用戶)環境變量,僅為當前進程設置(局部的)環境變量。
            因為VC8、9都可以很方便的為單個進程設置環境變量。

            觀察vc8和vc9的vcvars32.bat的內容(位置見上), 發現它們都只有一行:
            "%VS80COMNTOOLS%vsvars32.bat"
            "%VS90COMNTOOLS%vsvars32.bat"

            VS80COMNTOOLS、VS90COMNTOOLS(注意不是VC而是VS)分別是VS2005和VS2008安裝后會設置的環境變量。
            所以我們也可以在自己的批處理中,很方便的為當前進程設置需要的環境變量。如下:

            call "%VS80COMNTOOLS%vsvars32.bat"
            以下cl命令將執行VC8的cl。

            call "%VS90COMNTOOLS%vsvars32.bat"
            以下cl命令將執行VC9的cl。



            四、 總結

            如果僅需要使用某個版本的VC, 并且只為自己方便而使用命令行, 可以使用上面任何一種方式。
            簡單歸納如下:

            1、 使用全局環境變量——在系統或當前用戶變量中加入需要的值。
                    1.1 重新安裝
                    1.2 手工加入

            2、 不使用全局環境變量
            ——在執行cl前,先使用對應的vcvars32.bat(命令行窗口中執行或者腳本中call prefix\vcvars32.bat)。

                    2.1 將vcvars32.bat加入Path變量
                    2.2 使用"%VSXXCOMNTOOLS%vsvars.bat" (VC8、9) 或者 absolutePath\vcvars32.bat


            如果需要使用多個版本的VC、 或者需要將編譯腳本發布給客戶使用, 就不能這么隨意了。
            具體見:《配置msvc命令行環境(續)——編寫msvc編譯腳本



            相關鏈接:

            ——《配置msvc命令行環境(續)——編寫msvc編譯腳本
            http://www.shnenglu.com/ownwaterloo/archive/2009/04/16/write_compile_script_for_msvc.html


            ——《IDE 不是程序員的唯一選擇(一)
            http://blog.codingnow.com/2008/09/replacement_of_ide_1.html



             
            Creative Commons License
            作品采用知識共享署名-非商業性使用-相同方式共享 2.5 中國大陸許可協議進行許可。

            轉載請注明 :
            文章作者 - OwnWaterloo
            發表時間 - 2009年04月15日
            原文鏈接 - http://www.shnenglu.com/ownwaterloo/archive/2009/04/15/environment_for_using_cl_from_command_line.html
            posted on 2009-04-15 21:29 OwnWaterloo 閱讀(58262) 評論(0)  編輯 收藏 引用
            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿(8)

            隨筆檔案(16)

            鏈接

            搜索

            •  

            積分與排名

            • 積分 - 197903
            • 排名 - 133

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜

            久久久久亚洲AV无码去区首| jizzjizz国产精品久久| 久久精品成人免费国产片小草| 精品国产乱码久久久久久郑州公司 | 精品久久久久久久久久中文字幕| 色综合久久久久综合体桃花网| 99久久夜色精品国产网站 | 伊人色综合久久天天| 美女写真久久影院| 久久精品视频91| 人妻精品久久久久中文字幕69| 国产精品九九久久免费视频 | segui久久国产精品| 久久久久国产一区二区| 伊人色综合久久天天人手人婷| 久久国产乱子伦精品免费午夜| 合区精品久久久中文字幕一区| 国产成人久久精品一区二区三区| 久久91精品国产91久久户| 久久久精品无码专区不卡| 少妇内射兰兰久久| 久久男人中文字幕资源站| 久久免费精品一区二区| 亚洲第一极品精品无码久久| 热久久国产欧美一区二区精品| 国产午夜久久影院| 综合网日日天干夜夜久久| 嫩草影院久久国产精品| 久久亚洲私人国产精品vA | 性欧美丰满熟妇XXXX性久久久| 久久久久国产一级毛片高清板| 国产精品久久午夜夜伦鲁鲁| 久久久久久国产精品无码下载| 久久无码一区二区三区少妇 | 久久超碰97人人做人人爱| 欧美久久久久久| 久久综合伊人77777麻豆| 久久久亚洲精品蜜桃臀| 亚洲性久久久影院| 久久电影网| 久久99精品国产麻豆蜜芽|