• <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)

            鏈接

            搜索

            •  

            積分與排名

            • 積分 - 197904
            • 排名 - 133

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜

            久久亚洲美女精品国产精品| 久久天天躁狠狠躁夜夜不卡 | 久久99精品国产麻豆蜜芽| 久久久久人妻一区精品色| 四虎国产精品免费久久久| 久久久久无码精品| 久久99亚洲网美利坚合众国| AAA级久久久精品无码片| 久久久久亚洲精品天堂久久久久久 | 久久强奷乱码老熟女| 久久精品国产日本波多野结衣| 精品久久久久久成人AV| 人人狠狠综合久久亚洲高清| 99999久久久久久亚洲| 中文字幕乱码久久午夜| 色综合久久久久综合99| 国产精品一久久香蕉国产线看| 亚洲欧美一级久久精品| 国产 亚洲 欧美 另类 久久| 久久天堂AV综合合色蜜桃网| 亚洲精品高清一二区久久| 99久久精品无码一区二区毛片 | 天天综合久久久网| 日韩精品久久久久久久电影蜜臀| 久久精品一区二区三区中文字幕| 精品999久久久久久中文字幕| 久久久久久久久久久久久久| 日日狠狠久久偷偷色综合免费 | 久久久久国产精品熟女影院 | 国产高潮国产高潮久久久91 | 久久无码人妻精品一区二区三区| 日韩亚洲欧美久久久www综合网| 狠狠色婷婷综合天天久久丁香| 无码伊人66久久大杳蕉网站谷歌| 久久久久久久久久久久久久| 久久久久99这里有精品10| 污污内射久久一区二区欧美日韩| 久久国产精品视频| 久久这里的只有是精品23| 国产激情久久久久久熟女老人| 伊人久久大香线蕉综合影院首页 |