• <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://m.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://m.shnenglu.com/ownwaterloo/archive/2009/04/15/environment_for_using_cl_from_command_line.html
            posted on 2009-04-15 21:29 OwnWaterloo 閱讀(58306) 評論(0)  編輯 收藏 引用
            <2025年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            常用鏈接

            留言簿(8)

            隨筆檔案(16)

            鏈接

            搜索

            •  

            積分與排名

            • 積分 - 198340
            • 排名 - 134

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜

            久久久久四虎国产精品| 日韩电影久久久被窝网| 久久久亚洲欧洲日产国码aⅴ| 久久精品成人欧美大片| 成人久久免费网站| 久久99精品久久久久子伦| 久久久久久狠狠丁香| 久久丝袜精品中文字幕| 一本色道久久HEZYO无码| 精品综合久久久久久97超人| 精品无码久久久久久久动漫| 久久精品一区二区三区中文字幕| 国产成人精品综合久久久久 | 丁香久久婷婷国产午夜视频| 日韩亚洲国产综合久久久| 日韩精品久久无码中文字幕 | 久久婷婷国产剧情内射白浆| 国产人久久人人人人爽| 久久天天躁狠狠躁夜夜2020| 日韩人妻无码一区二区三区久久| 国产精品久久久久久久午夜片| 久久这里只有精品首页| 国产L精品国产亚洲区久久| 国产69精品久久久久观看软件 | 久久电影网一区| 亚洲另类欧美综合久久图片区| 91精品国产91久久综合| 狠狠色丁香婷婷久久综合五月| 久久国产精品久久久| 久久久久久久97| 伊人久久国产免费观看视频| 国产精品久久国产精麻豆99网站| 久久久久国产日韩精品网站| 久久国产高潮流白浆免费观看| 亚洲性久久久影院| 久久久久亚洲av成人无码电影| 精品久久无码中文字幕| 看久久久久久a级毛片| 久久99久国产麻精品66| 久久国产免费直播| 亚洲国产精品18久久久久久|