命令行編譯sln
『壹』 如何命令行編譯C#sln工程
一 使用devenv來build單個project
devenv是VisualStudio的可執行程序,一般安裝在「C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE」下。用來在命令行或GUI方式運行VisualStudio。其中devenv.com是命令行程序,devenv.exe是GUI的程序。默認地當你調用devenv的時候其實是啟動devenv.com,除非你顯示地調用devenv.exe才會啟動GUI的VisualStudio。
使用devenv來build一個.sln的實例:
devenv d:\Build\MyProject\Src\MyProject.sln /Build "Release|Win32"
使用devenv來build一個.sln中的某個的實例:
devenv.exe d:\Build\MyProject\Src\NyProject.sln /build "Release|Win32" /Project MyProject1
注意:通常地.sln中的多個Projects間有依賴關系,所以雖然你只是build一個.sln中的某個Project,但是還是需要指定Project所在.sln,然後通過/Project來指定Project的名字。
如果只是單個的Project,沒有引用其他的projects,這個時候可以不指定.sln,直接build Project,如下實例:
devenv d:\Build\MyProject\Src\MyProject.vcxproj /Build "Release|Win32"
注意此時實際上devenv做如下事:
此時devenv將在此project文件的父目錄中查找與Project相同名字的.sln;
如果沒有找到的話,然後查找其他的引用了此Project的.sln;
如果還是沒有找到的話會創建臨時的不保存的與Project同名的.sln。
二 devenv的更多幫助
可以使用devenv /?來查看詳細的幫助。
.sln或project的路徑有空格時,需要對路徑加"";
多個/開關間使用空格隔開;
devenv不支持通配符或正則表達式語法;
三 MSBuild
如果你的機器上沒有裝有VisualStudio,那麼可以使用MSBuild來build .sln或project。MSBuild可以通過安裝.NETFramework來安裝,一般的安裝路徑為C:\Windows\Microsoft.NET\Framework。其實devenv執行build時候,後台也是調用MSBuild來build的。
可以使用msbuild /?來查看詳細的幫助;
簡單實例如下:
MSBuild MyApp.sln /t:Rebuild /p:Configuration=Release
MSBuild MyApp.csproj /t:Clean
/p:Configuration=Debug;/p:Platform=x86;TargetFrameworkVersion=v3.5
同樣注意,如果project引用了其他的projects的時候,最好build整個.sln。
『貳』 怎麼命令行編譯C# sln工程
https://msdn.microsoft.com/en-us/library/ms164311.aspx
https://msdn.microsoft.com/en-us/library/dd393573.aspx
『叄』 VC++命令行操作
cl.exe所在的文件夾裡面有一個批處理叫做
VSVAR32.BAT
首先運行它一次,你就可以用cl.exe來編譯你的代碼了。
CL.exe 是控制 Microsoft C 和 C++ 編譯器與鏈接器的 32 位工具。編譯器產生通用對象文件格式 (COFF) 對象 (.obj) 文件。鏈接器產生可執行文件 (.exe) 或動態鏈接庫文件 (DLL)。
注意,所有編譯器選項都區分大小寫。
若要編譯但不鏈接,請使用 /c。
使用 NMAKE 生成輸出文件。
使用 BSCMAKE 支持類瀏覽。
以下是一個完整的編譯器選項分類列表。
優化
選項 作用
/O1 創建小代碼
/O2 創建快速代碼
/Oa 假設沒有別名
/Ob 控制內聯展開
/Od 禁用優化
/Og 使用全局優化
/Oi 生成內部函數
/Op 改善浮點數一致性
/Os 代碼大小優先
/Ot 代碼速度優先
/Ow 假定在函數調用中使用別名
/Ox 使用最大優化 (/Ob1gity /Gs)
/Oy 省略框架指針
代碼生成
選項 作用
/clr 啟用 C++ 的託管擴展並產生在公共語言運行庫上運行的輸出文件
/EH 指定異常處理模型
/G3 優化代碼以優選 386 處理器。在 Visual C++ 5.0 中已經停用,編譯器將忽略此選項
/G4 優化代碼以優選 486 處理器。在 Visual C++ 5.0 中已經停用,編譯器將忽略此選項
/G5 優化代碼以優選 Pentium
/GB 與 /G6 等效;將 _M_IX86 的值設置為 600
/Gd 使用 __cdecl 調用約定
/Ge 激活堆棧探測
/GF
/GF 啟用字元串池
/GH 調用掛鉤函數 _penter
/GH 調用掛鉤函數 _pexit
/GL 啟用全程序優化
/Gm 啟用最小重新生成
/Gr 啟用運行時類型信息 (RTTI)
/Gr 使用 __fastcall 調用約定
/GS 控制堆棧探測
/GT 支持使用靜態線程本地存儲區分配的數據的纖程安全
/GX 啟用同步異常處理
/Gy 啟用函數級鏈接
/GZ 使用 __stdcall 調用約定
/MD 使用 MSVCRT.lib 創建多線程 DLL
/MDd 使用 MSVCRTD.lib 創建調試多線程 DLL
/ML 使用 LIBC.lib 創建單線程可執行文件
/MLd 使用 LIBCD.lib 創建調試單線程可執行文件
/MT 使用 LIBCMT.lib 創建多線程可執行文件
/MTd 使用 LIBCMTD.lib 創建調試多線程可執行文件
輸出文件
選項 作用
/FA
/FA 創建列表文件
設置列表文件名
/Fd 重命名程序資料庫文件
/Fe 重命名可執行文件
/Fm 創建映射文件
/Fo 創建對象文件
/Fp 指定預編譯頭文件名
/FR
/FR 生成瀏覽器文件
/Fx 將插入的代碼與源文件合並
調試
選項 作用
/GS 緩沖區安全檢查
/GZ 與 /RTC1 相同
/RTC 啟用運行時錯誤檢查
/Wp64 檢測 64 位可移植性問題
/Yd 將完整的調試信息放在所有對象文件中
/Yl 創建調試庫時插入 PCH 引用
/Z7 生成與 C 7.0 兼容的調試信息
/Zd 生成行號
/Zi 生成完整的調試信息
預處理器
選項 作用
/AI 指定在解析傳遞到#using 指令的文件引用時搜索的目錄
/c 在預處理期間保留注釋
/D 定義常數和宏
/E 將預處理器輸出復制到標准輸出
/EP 將預處理器輸出復制到標准輸出
/Fl 預處理指定的包含文件
/FU 強制使用文件名,就像它已被傳遞到#using 指令一樣
/I 在目錄中搜索包含文件
/P 將預處理器輸出寫入文件
/U 移除預定義宏
/U 移除所有的預定義宏
/X 忽略標准包含目錄
/ZI 將調試信息包含在與「編輯並繼續」兼容的程序資料庫中
語言
選項 作用
/noBool 取消 C++ bool、true 和 false 關鍵字
/vd 取消或啟用隱藏的 vtordisp 類成員
/vmb 對指向成員的指針使用最佳的基
/vmg 對指向成員的指針使用完全一般性
/vmm 聲明多重繼承
/vms 聲明單一繼承
/vmv 聲明虛擬繼承
/Za 禁用語言擴展
/Zc 在 /Ze 下指定標准行為
/Ze 啟用語言擴展
/Zg 生成函數原型
/Zl 從 .obj 文件中移除默認庫名
/Zp n 封裝結構成員
/Zs 只檢查語法
鏈接
選項 作用
/F 設置堆棧大小
/LD 創建動態鏈接庫
/LDd 創建調試動態鏈接庫
/link 將指定的選項傳遞給 LINK
/MD 使用 MSVCRT.lib 編譯以創建多線程 DLL
/MDd 使用 MSVCRTD.lib 編譯以創建調試多線程 DLL
/ML 使用 LIBC.lib 編譯以創建單線程可執行文件
/MLd 使用 LIBCD.lib 編譯以創建調試單線程可執行文件
/MT 使用 LIBCMT.lib 編譯以創建多線程可執行文件
/MTd 使用 LIBCMTD.lib 編譯以創建調試多線程可執行文件
預編譯頭
選項 作用
/Y- 忽略當前生成中的所有其他預編譯頭編譯器選項
/Yc 創建預編譯頭文件
/Yd 將完整的調試信息放在所有對象文件中
/Yu 在生成期間使用預編譯頭文件
/YX 自動處理預編譯頭
雜項
選項 作用
@ 指定響應文件
/? 列出編譯器選項
/c 編譯但不鏈接
/H 限制外部(公共)名稱的長度
/HELP 列出編譯器選項
/J 更改默認的 char 類型
/NOLOGO 取消顯示登錄版權標志
/QI0f 確保 Pentium 0F 指令沒有問題
/QIfdiv FDIV、FPREM、FPTAN 和 FPATAN 指令有缺陷的 Intel Pentium 微處理器的變通方法
QIfist 當需要從浮點類型轉換為整型時取消 Helper 函數 _ftol 的調用
/showIncludes 在編譯期間顯示所有包含文件的列表
/Tc
/Tc 指定 C 源文件
/Tp
/Tp 指定 C++ 源文件
/V 設置版本字元串
/w 設置警告等級
/w 禁用所有警告
/Wall 啟用所有警告,包括默認情況下禁用的警告
/WL 在從命令行編譯 C++ 源代碼時啟用錯誤信息和警告消息的單行診斷
/Zm 設置編譯器的內存分配限制
CL 命令行使用下列語法:
CL [option...] file... [option | file]... [lib...] [@command-file] [/link link-opt...]
下表說明CL 命令的輸入項意義
option 一個或多個 CL 選項。請注意,所有選項都應用於所有指定的源文件。選項是由一個正斜杠 (/) 或一個短劃線 (–) 指定的。如果某個選項帶有參數,則該選項的說明指定在選項和參數之間是否允許有空格。選項名(/HELP 選項除外)區分大小寫。有關更多信息,請參閱 CL 選項的順序。
file 一個或多個源文件、.obj 文件或庫的名稱。CL 編譯源文件並將 .obj 文件和庫的名稱傳遞給鏈接器。有關更多信息,請參閱 CL 文件名語法。
lib 一個或多個庫名。CL 將這些名稱傳遞給鏈接器。
command-file 包含多個選項和文件名的文件。有關更多信息,請參閱 CL 命令文件。
link-opt 一個或多個鏈接器選項。CL 將這些選項傳遞給鏈接器。
您可以指定任意數目的選項、文件名和庫名,條件是命令行上的字元數不超過 1024,該限制是操作系統指定的。
CL 命令文件請參見
設置編譯器選項 | 編譯器選項
命令文件是一個文本文件,它包含您另外在命令行上鍵入或使用 CL 環境變數指定的選項和文件名。CL 接受在 CL 環境變數中或命令行上用作參數的編譯器命令文件。與命令行或 CL 環境變數不同,命令文件允許使用多行選項和文件名。
命令文件中的選項和文件名將根據 CL 環境變數中或命令行上的命令文件名的位置被進行處理。但是,如果 /link 選項出現在命令文件中,則該行其餘部分的所有選項將被傳遞給鏈接器。命令文件的後面幾行中的選項和命令行上命令文件調用之後的選項仍被作為編譯器選項接受。
命令文件一定不能包含 CL 命令。每個選項必須在同一行上開始和結束;不能使用反斜杠 (\) 跨行組合一個選項。
命令文件用一個 @ 符後接一個文件名指定;該文件名可指定絕對路徑或相對路徑。
『肆』 如何只生成 chrome.sln 工程文件以便編譯 chromium
一,編譯之前的准備。
1) 了解代碼組織結構。
Chrome source非常龐大,並且在其主目錄下還包含有工具和組件,任何一個工具和組件也附帶有其源代碼。首先得熟悉這些源代碼的組織結構,在http://src.chromium.org/svn/中包含如下子目錄:releases,曾經發布過的chrome源代碼的正式版本;trunk,當前最新的源代碼。由於releases中的代碼比較舊,這里就不做說明了,只說明trunk的結構。在trunk下面有3個重要的目錄,deps包含了chrome編譯和運行所需要的全部組件的代碼。src裡麵包含的則是chrome的主程序的代碼,tools包含的是下載和配置編譯所需要的第三方工具的壓縮包和源代碼,其中就有svn和python這2個比較重要的工具,後面再詳細介紹。暫時做這樣一個簡單的介紹,因為其組織結構比較負責,以後再作補充斧正。
2)如何下載和同步源代碼。
首先談談下載:
1,最簡單的方法是從chrome官網上直接下載源代碼壓縮包,地址是http://build.chromium.org/buildbot/archives/chromium_tarball.html。
2,或者採用svn從http://src.chromium.org/svn/trunk/src這個地方heckout,這要求你先在本地建一個源代碼的主目錄。
3,另外一個辦法則是採用google提供的一個部署工具depot_tools。雖然這幾種辦法都可下載完整的源代碼,但目前的情況是:chrome基於Visual Stdio 2005 進行編譯,如果順利完成編譯工作,自然少不了sln文件,較早的源代碼中包含有現成的sln和vcproject文件,但後來做了修改,這些文件被拋棄掉,Google自己開發了一種腳本工具叫做GYP,這個工具採用python編寫,GYP採用了自定義的一套規則,用於生成各種工程文件。而關鍵的python則包含於depot_tools中,因此不論採用什麼方法下載的代碼,都得下載depot_tools這個工具,以獲得必須的工程文件。
depot_tools位於 http://src.chromium.org/svn/trunk/tools 下面,包括一個目錄和一個zip格式的壓縮包。
3)關於編譯器
前面提到Chrome採用Visual Stdio 2005進行編譯,根據http://dev.chromium.org的說明,需進行如下操作正常編譯
a, 安裝Visual Studio 2005.
b, 安裝Visual Studio 2005 Service Packe 1.
c, 安裝Visual Studio Hotfix 947315.
d, 如果是vista系統,還需安裝Visual Studio 2005 Service Packe 1 Update for Windows Vista.
e, 安裝Windows 2008 SDK,如果是Visual Studio 2008則不需要這一步。
f, 配置Windows 2008 SDK,使2008 SDK成為首選開發庫,以獲得一些新功能和特性。辦法是在開始->程序->Microsoft Windows SDK v6.1 > Visual Studio Registration > Windows SDK Configuration Tool,選擇make current按鈕。也可以在VS裡面手動配置include和libary路徑,效果是一樣的。
二,如何配置工程文件
1,如果是採用depot_tools,那麼從代碼下載到生成sln文件會自動完成。其步驟是
(1)下載depot_tools到本地存儲,假設位於d:/depot_tools.
(2)將d:/depot_tools添加到系統環境變數中。
(3)創建一個源代碼根目錄,假設為 d:/chrome,目錄不得包含空格。
(4)在命令行下切換當前目錄到d:/chrome。
(5)執行命令 gclient config http://src.chromium.org/svn/trunk/src ,該命令會首先下載svn和python分別到d:/depot_tools/svn_bin和d:/depot_tools/python_bin。
(6)執行命令 gclient sync 這個命令會調用svn同步源代碼。這個過程會比較漫長。全部完成之後全部源代碼就保存在d:/chrome裡面。未編譯的代碼大約有4個G左右,過程將十分漫長。這樣獲得的源代碼已經包含所有的工程文件,可直接打開。
重點說明一下gclient,它實際上是一個批處理文件,它主要做了如下一些事情,首先設置環境變數,如代碼根目錄,工具根目錄等。其次調用win_tools.bat從伺服器下載svn和python。最後調用python.exe對Chrome.gyp進行解析生成所有工程文件。
另外需要說明的是,gclient sync的過程非常漫長,根據命令行的提示來看總共需要同步67個項目(不是工程),期間可能會因為一些原因導致錯誤而退出這個過程,需要繼續調用sync。比如網路出現故障svn會多次進入sleep狀態然後重試,如果多次失敗就會報錯退出,還有的情況是某些子目錄的屬性問題無法同步,可根據提示進行操作。還有個目前新出現的問題,下面2個目錄「src/webkit/data/layout_tests/LayoutTests」和「src/third_party/WebKit/LayoutTests」的源代碼是從src.webkit.org簽出來的,但是這個網站目前存在問題無法簽出代碼, 需要屏蔽掉這2個目錄,由於裡面是測試代碼,即使丟棄也不會影響整個工程的編譯,方法是打開trunk下面的.gclient文件,向裡面添加如下內容
"custom_deps" : {
"src/webkit/data/layout_tests/LayoutTests":None,
"src/third_party/WebKit/LayoutTests":None,
},
這樣svn就能完成代碼的同步了。最後gclient會調用depot_tools/python_bin/python.exe 對 src/build/gyp_
chromium進行處理,這樣就得到了所有的sln和vcproject文件。
2,如果是下載的代碼壓縮包或者checkout的代碼,代碼目錄裡面沒有sln文件,這個時候需要調用命令行進入源代碼根目錄,然後執行命令 gclient runhooks --force,命令執行後會直接對Chrome.gyp進行解析,生成sln文件。
在實際下載過程中,最開始的時候我用TortoiseSVN從http://src.chromium.org/svn/trunk/src checkout源代碼,但是得到的代碼只有幾百兆,執行gclient runhooks --force命令後也沒有找到sln文件,具體原因未知,不建議使用此方式。而直接下載代碼壓縮包的方式沒有嘗試過,不知道是否可行。因此最穩妥的方法還是使用depot_tools來部署和處理源代碼。
三 編譯工程
啟動Visual Studio 2005打開 src/chrome/browser/chrome.sln,或者打開src/build/all.sln,如果打開的是chrome.sln裡麵包含480個工程,而all.sln則包含507個工程,一些09年的編譯說明提到有300左右的工程,可見chrome的代碼變動比較大。對整個解決方案進行編譯,打開需要2個小時才能完成編譯,視硬體環境而定,內存越大越快,推薦4G以上內存,酷睿2核或者4核。編譯完成以後據說會佔用30G的空間。編譯後的文件位於 d:/chorme/chrome/debug 目錄或者 d:/chorme/chrome/release目錄下。
四 chrome涉及的開源項目
Chrome 採用了很多開源項目,這里把它們列出來以備後用,目前Chrome涉及25個開源代碼:
1、Google Breakpad
/src/breakpad
開源的跨開台程序崩潰報告系統。
2、Google URL
/src/googleurl
Google小巧的URL解析整理庫。
3、Skia
/src/skia
矢量圖引擎。
4、Google v8
/src/v8
Google開源的javaScript引擎。V8實現了ECMA-262第三版的ECMAScript規范,可運行於Windows XP 和 Vista, Mac OS X 10.5 (Leopard), 及 Linux等基於IA-32 或 ARM 的系統之上。V8可單獨運行也可嵌入到任何C++程序中。
5、Webkit
/src/webki
開源的瀏覽器引擎
6、Netscape Portable Runtime (NSPR)
/src/base/third_party/nspr
Netscape Portable Runtime (NSPR) 提供了系統級平台無關的API及類似libc的函數。
7、Network Security Services (NSS)
/src/base/third_party/nss
Network Security Services (NSS) 一套用於支持伺服器端與客戶端安全開發的跨平台函數庫。程序通過NSS可支持SSL v2 and v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 認證及其它一些安全標准。
8、Hunspell
/src/chrome/third_party/hunspell
Spell checker and morphological analyzer library and program designed for languages with rich morphology and complex word compounding or character encoding.
9、Windows Template Library
/src/chrome/third_party/wtl
用於開發Windows程序與UI組件的C++ library。WTL擴展了ATL (Active Template Library) 並提供一套用於controls, dialogs, frame windows, GDI objects等開發的類。
10、Google C++ Testing Framework
/src/testing/gtest
Google用於編寫C++測試的基於xUnit架構的框架,可用於多種平台上:Linux, Mac OS X, Windows, Windows CE, and Symbian。支持自動測試發現,有一套豐富的Assertions斷言,用於可自定義斷言,death tests, fatal and non-fatal failures, various options for running the tests, and XML test report generation.
11、bsdiff 與 bspatch
/src/third_party/bsdiff 及 /src/third_party/bspatch
bsdiff 與 bspatch 用於為二進制文件生成補丁。
12、bzip2
/src/third_party/bzip2
bzip2使用Burrows-Wheeler block sorting text compression 演算法與Huffman編碼壓縮文件。
13、International Components for Unicode (ICU)
/src/third_party/icu38
ICU是一套成熟並被廣泛使用的C/C++ 及 Java 庫,可為軟體提供Unicode與全球化支持。
14、libjpeg
/src/third_party/libjpeg
用於處理JPEG (JFIF)圖像格式的庫。
15、libpng
/src/third_party/libpng
PNG圖像格式庫。支持絕大部分的PNG特性,可擴展。已經被廣泛地使用了13年以上了。
16、libxml
/src/third_party/libxml
C語言的XML解析庫。
17、libxslt
/src/third_party/libxslt
C語言的XSLT庫。
18、LZMA
/src/third_party/lzma_sdk
LZMA為7-Zip軟體中7z格式壓縮所使用的壓縮演算法,有很好的壓縮效果。
19、stringencoders
/src/third_party/modp_b64
一系列高性能的c-string轉換函數,比如:base 64 encoding/decoding。通常比其標准實現快兩倍以上。
20、Netscape Plugin Application Programming Interface (NPAPI)
/src/third_party/npapi
多種瀏覽器使用的跨平台插件架構。
21、Pthreads-w32
/src/third_party/pthread
用於編寫多線程程序的API
22、SCons - a software construction tool
/src/third_party/scons
開源的軟體構建工具——下一代的編譯工具。可以認為SCons是改進過的跨平台配上autoconf/automake與ccache的Make工具的子系統。
23、sqlite
/src/third_party/sqlite
大名鼎鼎的嵌入式資料庫引擎。自管理、零配置、無需伺服器、支持事務。
24、TLS Lite
/src/third_party/tlslite
SSL 3.0, TLS 1.0, and TLS 1.1的Python免費實現庫。TLS Lite支持這些安全驗證方式:SRP, shared keys, and cryptoIDs in addition to X.509 certificates。註:Chrome並不包涵Python。TLS Lite用於Chrome開發過程中的代碼覆蓋、依賴檢查、網頁載入時間測試及生成html結果比較等。
25、zlib
/src/third_party/zlib
zlib為一套用於任意平台與機器的無損數據壓縮的庫,它免費、自由、無任何法律專利問題。
『伍』 命令行下編譯vs2010工程怎麼做
用法:
devenv [解決方案文件 | 項目文件 | 任意文件.擴展名] [開關]
devenv 的第一個參數通常是一個解決方案文件或項目文件。
如果您希望在編輯器中自動打開文件,
也可以使用任何其他文件作為第一個參數。當您輸入項目文件時,IDE
會在項目文件的父目錄中查找與該項目文件具有相同
基名稱的 .sln 文件。如果不存在這樣的 .sln 文件,
IDE 將查找引用該項目的單個 .sln 文件。如果不存在這樣的單個
.sln 文件,則 IDE 將創建一個具有默認 .sln 文件名的未保存
的解決方案,其基名稱與項目文件的基名稱相同。
『陸』 如何在 Win32 下用 VCBUILD 編譯 sln 下的某一個 vcproj 文件
使用vs安裝目錄下\Common7\IDE\devenv.com工具可對指定的sln進行編譯。
Command line builds:
devenv solutionfile.sln /build [ solutionconfig ] [ /project projectnameorfile [ /projectconfig name ] ]
可通過help查看參數取值及含義。
『柒』 如何:在命令提示符處進行編譯求解答
使用.NET Framework SDK 提供的 Visual C# 和 Visual Basic 編譯器。本主題介紹如何使用批處理文件針對 .NET Compact Framework 程序集而非 .NET Framework 全功能版(桌面)程序集在命令提示符處進行編譯。可以直接使用批處理文件或從 make 文件實用工具調用批處理文件來使 .NET Compact Framework 集成到企業生成系統。使用MSBuild 進行編譯使用MSBuild 在命令提示符處進行編譯在命令提示處,定位到 .NET Compact Framework 應用程序的項目文件所在的目錄。項目文件具有 .sln、.vbproj 或 .csproj 擴展名。 鍵入msbuild.exe,後面跟隨項目文件。「命令提示符」窗口將提供有關生成過程的信息。 用於命令提示符編譯的批處理文件下表描述了命令提示符編譯所需的文件、命令和參數。 要求 說明.NET Compact Framework 程序集默認位於 C:\Program Files\Microsoft.NET\SDK\v2.0\CompactFramework\WindowsCE 文件夾中。您可以在批處理文件或 make 文件中指定該路徑,或者使用「我的電腦」屬性對話框將其指定為一個環境變數。系統路徑變數包括 .NET Framework SDKVisual Basic 編譯器 (vbc.exe) 和 Visual C# 編譯器 (csc.exe) 位於 %systemroot%\Microsoft.NET\Framework\<version 2.0> 文件夾中。系統路徑變數必須包括此路徑。-r根據需要引用程序集。您可以通過設置環境變數來指定程序集,如 REF。默認情況下會引用大多數 .NET Compact Framework 程序集。請注意,C# 需要顯式引用 Mscorlib.dll,Visual Basic 使用 -sdkpath 開關來定位此文件。-importsVisual Basic 需為以下命名空間進行顯式導入:Microsoft.VisualBasicSystem.System.DataSystem.DrawingSystem.Windows.Forms-nostdlb指示Visual C# 編譯器忽略 .NET Framework 全功能版(桌面)的程序集。-netcf指示Visual Basic 編譯器忽略 .NET Framework 全功能版(桌面)的程序集。-noconfig必選。-sdkpath需要Visual Basic 來定位 Mscorlib.dll。批處理文件需要以下信息:.NET Compact Framework 程序集位置的路徑變數。這些示例使用 NETCF_PATH。根據需要使用 -r 開關引用程序集(串聯成一個變數)。帶有所需開關和參數的編譯器命令。這些參數包括變數引用、用於合並其他參數的星號 (*) 和輸入到命令提示以運行批處理文件的源文件的名稱。創建編譯用的批處理文件在文本編輯器中創建一個新文件,然後針對您的首選編程語言添加示例批處理文件的內容,如下面的示例所示。如有必要,調整 NETCF_PATH 變數。保存並命名該文件,例如,可以將 Visual Basic 批處理文件命名為 vbcc.bat,將 C# 批處理文件命名為 cscc.bat。使用批處理文件編譯應用程序在命令提示符下輸入該批處理文件的名稱,然後輸入源文件,如下面的示例所示:vbcc myapp.vb可復制到設備或模擬程序的可執行文件將在當前目錄中生成。用於C# 編譯的批處理文件下面是一個用於 C# 編譯的示例批處理文件。 @echo off if "%NETCF_PATH%" == "" ( set NETCF_PATH=c:\Program Files\Microsoft.NET\SDK\v2.0\CompactFramework\WindowsCE) if not "%REF%" == "" goto compile set REF=%REF% "/r:%NETCF_PATH%\MsCorlib.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Data.dll" set REF=%REF% "/r:%NETCF_PATH%\System.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Drawing.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Messaging.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Net.IrDA.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Web.Services.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Windows.Forms.DataGrid.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Windows.Forms.dll" set REF=%REF% "/r:%NETCF_PATH%\Microsoft.WindowsCE.Forms.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Xml.dll" :compile csc -nostdlib -noconfig %REF% %* 用於Visual Basic 編譯的批處理文件下面是一個用於 Visual Basic 編譯的示例批處理文件。 @echo off if "%NETCF_PATH%" == "" ( set NETCF_PATH=c:\Program Files\Microsoft.NET\SDK\v2.0\CompactFramework\WindowsCE) if not "%REF%" == "" goto compile set REF=%REF% "/r:%NETCF_PATH%\System.Data.dll" set REF=%REF% "/r:%NETCF_PATH%\System.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Drawing.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Messaging.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Net.IrDA.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Web.Services.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Windows.Forms.DataGrid.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Windows.Forms.dll" set REF=%REF% "/r:%NETCF_PATH%\Microsoft.WindowsCE.Forms.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Xml.dll" set REF=%REF% "/r:%NETCF_PATH%\Microsoft.VisualBasic.dll" set IMP= /Imports:Microsoft.VisualBasic,System,System.Data set IMP=%IMP% ,System.Drawing,System.Windows.Forms :compile vbc -sdkpath:%NETCF_PATH% -noconfig -netcf %IMP% %REF% %* 請參見其他資源生成應用程序和核心任務
『捌』 c#使用命令行編譯生成dll文件
C#使用csc.exe編譯程序,csc使用/target:library(縮寫: /t:library)參數生成Dll文件。
其它參數如下:
Visual C# 編譯器選項
- 輸出文件 -
/out:<文件> 指定輸出文件名(默認值: 包含主類的文件或第一個文件的基名稱)
/target:exe 生成控制台可執行文件(默認) (縮寫: /t:exe)
/target:winexe 生成 Windows 可執行文件 (縮寫: /t:winexe)
/target:library 生成庫 (縮寫: /t:library)
/target:mole 生成能添加到其他程序集的模塊 (縮寫: /t:mole)
/target:appcontainerexe 生成 Appcontainer 可執行文件 (縮寫: /t:appcontainerexe)
/target:winmdobj 生成 WinMDExp 使用的 Windows 運行時中間文件 (縮寫: /t:winmdobj)
/doc:<文件> 要生成的 XML 文檔文件
/platform:<字元串> 限制可以在其上運行此代碼的平台: x86、Itanium、x64、arm、anycpu32bitpreferred 或 anycpu。默認值為 anycpu。
- 輸入文件 -
/recurse:<通配符> 根據通配符規范,包括當前目錄和子目錄下的所有文件
/reference:<別名>=<文件> 使用給定的別名從指定的程序集文件引用元數據 (縮寫: /r)
/reference:<文件列表> 從指定的程序集文件引用元數據 (縮寫: /r)
/addmole:<文件列表> 將指定的模塊鏈接到此程序集中
/link:<文件列表> 嵌入指定的互操作程序集文件中的元數據 (縮寫: /l)
- 資源 -
/win32res:<文件> 指定 Win32 資源文件(.res)
/win32icon:<文件> 對輸出使用此圖標
/win32manifest:<文件> 指定 Win32 清單文件(.xml)
/nowin32manifest 不包括默認 Win32 清單
/resource:<資源信息> 嵌入指定的資源 (縮寫: /res)
/linkresource:<資源信息> 將指定的資源鏈接到此程序集 (縮寫: /linkres)
其中 resinfo 的格式是 <file>[,<string name>[,public|private]]
- 代碼生成 -
/debug[+|-] 發出調試信息
/debug:{full|pdbonly} 指定調試類型(「full」是默認類型,可以將調試程序附加到正在運行的程序)
/optimize[+|-] 啟用優化 (縮寫: /o)
- 錯誤和警告 -
/warnaserror[+|-] 將所有警告報告為錯誤
/warnaserror[+|-]:<警告列表> 將特定警告報告為錯誤
/warn:<n> 設置警告等級(0-4) (縮寫: /w)
/nowarn:<警告列表> 禁用特定的警告消息
- 語言 -
/checked[+|-] 生成溢出檢查
/unsafe[+|-] 允許「不安全」代碼
/define:<符號列表> 定義條件編譯符號 (縮寫: /d)
/langversion:<字元串> 指定語言版本模式: ISO-1、ISO-2、3、4、5 或 Default
- 安全性 -
/delaysign[+|-] 僅使用強名稱密鑰的公共部分對程序集進行延遲簽名
/keyfile:<文件> 指定強名稱密鑰文件
/keycontainer:<字元串> 指定強名稱密鑰容器
/highentropyva[+|-] 啟用高平均信息量的 ASLR
- 雜項 -
@<文件> 有關更多選項,請閱讀響應文件
/help 顯示此用法信息 (縮寫: /?)
/nologo 取消編譯器版權信息
/noconfig 不要自動包含 CSC.RSP 文件
- 高級 -
/baseaddress:<地址> 要生成的庫的基址
/bugreport:<文件> 創建「Bug 報告」文件
/codepage:<n> 指定打開源文件時要使用的代碼頁
/utf8output 以 UTF-8 編碼格式輸出編譯器消息
/main:<類型> 指定包含入口點的類型(忽略所有其他可能的入口點) (縮寫: /m)
/fullpaths 編譯器生成完全限定路徑
/filealign:<n> 指定用於輸出文件節的對齊方式
/pdb:<文件> 指定調試信息文件名(默認值: 擴展名為 .pdb 的輸出文件名)
/errorendlocation 輸出每個錯誤的結束位置的行和列
/preferreilang 指定首選輸出語言名稱。
/nostdlib[+|-] 不引用標准庫(mscorlib.dll)
/subsystemversion:<字元串> 指定此程序集的子系統版本
/lib:<文件列表> 指定要在其中搜索引用的附加目錄
/errorreport:<字元串> 指定如何處理內部編譯器錯誤: prompt、send、queue 或 none。默認值為 queue。
/appconfig:<文件> 指定一個包含程序集綁定設置的應用程序配置文件
/moleassemblyname:<字元串> 此模塊所屬程序集的名稱
『玖』 求教關於用 VS2010用命令行如何 編譯C++工程 (最好有詳細示例)
用法:
devenv
[解決方案文件
|
項目文件
|
任意文件.擴展名]
[開關]
devenv
的第一個參數通常是一個解決方案文件或項目文件。
如果您希望在編輯器中自動打開文件,
也可以使用任何其他文件作為第一個參數。當您輸入項目文件時,ide
會在項目文件的父目錄中查找與該項目文件具有相同
基名稱的
.sln
文件。如果不存在這樣的
.sln
文件,
ide
將查找引用該項目的單個
.sln
文件。如果不存在這樣的單個
.sln
文件,則
ide
將創建一個具有默認
.sln
文件名的未保存
的解決方案,其基名稱與項目文件的基名稱相同。
『拾』 borland c3.1(集成開發環境下)怎麼編譯和連接多個文件
起點-SDK和IDE的選擇
本文主要為學習Symbian開發的初學者講授如何准備開發環境。對Symbian開發有興趣、具備一定軟體設計基礎的朋友都可以來一起研究。需要說明的是,對於學習Symbian開發,需要有較為牢固的編程經驗(這里我們暫時要求具有較好的C++程序語言設計能力),需要較好的英語基礎,需要堅持不懈的精神;另外,如果你重來沒有接觸過VS2003,不懂DOS命令、不懂如何設置環境變數,請先學習相關知識。另外,本文的作用僅僅是總結和引導,強烈建議初學者結合本文和SDK文檔動手實踐
本文主要針對S60的開發環境的建立,因此首先為大家列出S60系統的各種版本。因為開發者應該根據需要,選擇自己適合的SDK版本。
1、Series60 第一版 - Symbian OS 6.1
2、Series60 第二版 - Symbian OS 7.0s
3、Series60 第二版 Pack 1 - Symbian OS 7.0s
4、Series60 第二版 Pack 2 - Symbian OS 8.0a
5、Series60 第二版 Pack 3 - Symbian OS 8.1a
6、Series60 第三版 - Symbian OS 9.0
需要要說明的是,Nokia的Symbian/Series60開發包支持的集成開發環境[IDE]工具有很多種,下面列出主要使用的一些IDE:
1、Microsoft Visual Studio 6 / Visaul C++ 6
2、Microsoft Visual Studio .NET [2003] / Visaul C++ 7
3、Borland C++ Builder 6
4、Borland C++ Builder X 1.0
5、Metrowerks CodeWarrior Studio for Symbian Personal/Professional 2.0/2.5
選擇哪種開發工具依據是你個人的習慣和喜好,需要注意的是,對於不同的開發環境,我們需要選擇不同SDK。本文所使用的SDK支持Series60 第二版 Pack 2 - Symbian OS 8.0a,IDE為VS2003:
=============================================
SDK:SERIES 60 2ND EDITION SDK FOR SYMBIAN OS SUPPORTING FEATURE PACK 2
SUPPORTING MICROSOFT VISUAL C++ CHINESE SIMPLIFIED EDITION
IDE:Microsoft Visual Studio .NET 2003
=============================================
若你使用的IDE是VC6,那麼步驟與本文將有所不同,你可以參考網上其他教程,網上講授Symbian環境設置的90%以上的文章都是基於VC6的。若你使用VS2003,但是所使用的SDK與本文使用的有所出入,那麼本文仍然適用,不過個別地方也許會有改動。有什麼問題可以提出來,大家一起討論。
本文並未講述安裝Nokia Developer Suite - Carbide.vs 來配合VS2003導入、建立S60工程。這部分內容將在下一篇文章講解如何建立、導入工程的時候詳細講解。因此你可以暫時不安裝該軟體。等你按照下面的說明將環境設置好以後,再安裝此軟體做更深一步研究。涉及此項內容的細節,請參閱:Symbian OS開發入門(二) :VS2003環境下Symbian工程的導入與建立。
我個人原來是使用VC6作為IDE,對VS2003下的開發也不是特別熟悉,我是一個Symbian開發的初學者,這里寫的東西是大多數基於SDK的開發文檔,結合自己測試的時候的一些經驗教訓。寫出來,一方面象引導象我一樣的初學者盡快入門,另外一方面大家也可以在此基礎上討論,解決一些經驗錯誤。幫助後來者少走彎路。
【開發環境建立詳細步驟】
一、系統要求
文檔中寫了一些對你PC的要求,反正就是保證你的電腦能運行VS2003和SDK。一般沒有什麼問題。系統要求Win2000 SP3以上, WinXP SP1以上,Win2003中任意一種。
二、軟體安裝
說明:在安裝SDK以前保證下列1-3項先被正確安裝。安裝軟體的時候必須保證你所使用的帳號是你PC的管理員帳號,否則可能導致某些環境變數不能被正確設置。SDK和IDE要安裝在電腦上的同一個分區。SDK的安裝路徑不能含有空格。下面詳細說明需要安裝的軟體及其步驟:
1、在安裝SDk之前必須安裝ActivePerl(官方文檔要求安裝Perl 5.6.1 build 531,並說明安裝其他版本可能會有問題,我自己測試使用ActivePerl-5.6.1.638-MSWin32-x86,運行情況良好)。該軟體可以到官方網站下載:
2、安裝JAVA Run-Time1.4.1_02 或者新版本,下載地址java.sun.com/downloads/index.html"
說明:在使用命令行編譯程序的時候事實上是不需要用到JAVA Run-Time1的。但是以後我會提到,若要使用SDK的一個強大的工具ApplicationWizard,就必須安裝該組件,同時若要使用Sisar等工具的話,JRE也必不可少。這里請你就先安裝吧。
3、安裝IDE,如前所述,安裝Microsoft Visual Studio .NET 2003
4、安裝SDK,注意前面所說的SDK的安裝路徑不能含有空格。並且要和IDE裝在同一個分區,這樣可以避免一些麻煩。下載地址:,6566,034-4,00.html
5、安裝Nokia Developer Suite - Carbide.vs 。這相當於VS2003的一個插件,用於幫助你導入或者建立S60工程,從而似的你可以在VS2003中編寫代碼。(本文暫時不講解怎麼使用,你可以先安裝,也可以以後用的時候再安裝)
下載地址:,,034-902,00.html
三、環境變數檢查
在2.0版本的SDK之前[不包括1.2For CW],你需要在系統變環境量中設置一個名為EPOCROOT的環境變數,(什麼是環境變數,如何設置,這個去自學),他要指向你的SDK包含有epoc32的路徑,前面沒有盤符,後面要加一個"\",這個一般在你安裝了SDK之後系統會自動替你加好。不過2.0之後的[包括1.2 For CW]就不必設置了,有一個名為devices的SDK管理工具會為一些需要使用這個變數的工具提供類似模擬EPOCROOT環境變數的功能。可以把devices看作是多個Symbian SDK,不限於S60,得切換工具,他的使用方法可以在你安裝了2.0SDK之後,在命令行模式下輸入 devices -help 來獲得幫助。
我們使用的這個版本的SDK不需要設置太多環境變數,這里只需要自己加入修改一下環境變數,在系統環境變數path中加入:
{VS2003的安裝路徑}\Microsoft Visual Studio .NET 2003\Vc7\bin;這樣才能保證後面用到的LINK.EXE被正確設置。
四、編譯運行「Helloworld」 - 檢查開發環境是否被正確設置
上面的安裝步驟完成以後,還沒有大功告成,這時你需要做的是檢查你的環境是否被正確設置。怎樣來確認開發環境已經正確建立了呢?最好的方式就是通過編譯、運行一個例子來檢驗。需要指出的一點是,下面的步驟可以在可以在Windows的命令行工具中操作,也可以在VS 2003自帶的工具「Visual Studio .NET 2003 命令提示」中操作。在VS 2003的命令行工具中操作,其優點是可以避免某些環境變數設置有誤而導致的錯誤,因為它不但包含系統環境下PATH變數的內容,同時也包含安裝VC++.NET過程中,添加的一些路徑,包括主要的編譯鏈接等工具。而缺點就是:若你僅僅在這里通過驗證,而在WINDOWS自帶的命令行界面沒有通過的話,那麼後期會遇到一些麻煩(例如使用ApplicationWizard建立工程)。所以,如果不使用VC++.NET帶的「命令提示」工具,您也許就會因為找不到相應編譯工具,而無法繼續下去。如果自己勤快一些,可以手動把環境變數加到系統PATH中去,這樣就可以用Windows「附件」菜單中的那個「命令提示」工具了,後面也許會順利一點。
1、打開Windows的命令行界面(或者VC++.NET自帶的命令行工具)
2、將剛剛安裝的SDK設置為默認的devices.這個可以通過下面的命令設置:
devices -setdefault @S60_2nd_FP2_SC:com.nokia.Series60
事實上SDK的安裝過程中就會提示你設置默認的devices。做這個工作的原因是你的系統中很可能安裝了多個SDK,那麼使用哪個SDK作為當前的開發工具,就需要正確設置。你可以使用命令行devices -default來查看當前的默認SDK是什麼。
3、找到Symbian工程文件所在的目錄
現在我們就通過SDK中自帶的例子來驗證你的環境是不是被正確設置。注意安裝了SDK以後,在其安裝目錄中的Series60Ex文件夾中有很多例子,我們使用helloworldbasic來驗證。在命令行界面中用cd命令進入helloworldbasic的group目錄:
cd sdk_installation _directory\Series60Ex\helloworldbasic\group
在group目錄下應該包含bld.inf和helloworldbasic.mmp這兩個文件。這兩個文件的簡要描述如下:
HelloWorld.mmp:項目定義文件,描述了將要構建的項目信息,還定義了一些資源文件和應用程序信息文件。它是一個環境中立的文件,可以使用各種工具來處理並生成各種目標環境的make文件。您可以使用文本編輯器查看該文件。裡面的信息還是很簡明的,包括構建目標,構建類型,源路徑,庫文件,頭文件等等信息。
Bld.inf:組件描述文件,它列出了一個組件當中包括的所有項目,還包括一些額外的構建指令。您也可以使用文本編輯器查看該文件。對於本實例來說,僅包括一個項目HelloWorld.mmp。
4、在命令行中輸入bldmake bldfiles
這個命令會處理當前目錄下的bld.inf文件,具體來說會執行以下處理過程
(1)、生成目錄C:\Symbian\8.0a\S60_2nd_FP2_SC\epoc32\BUILD\SYMBIAN\8.0A\S60_2ND_FP2_SC\SERIES60EX\HELLOWORLDBASIC
(2)、在這個目錄下,生成一系列的Make文件,針對各種目標環境。比如VC7.MAKE,CW_IDE.MAKE等等。
(3)、在當前目錄下生成abld.bat文件,這個文件會在隨後用到。您可以查看該文件的內容。但是建議不要手工的更改它的內容。
Bldmake命令也支持其他的命令行選項,您可以直接輸入bldmake來查看簡要的介紹,還可以查看SDK文檔了解詳細信息。
5、在命令行中輸入abld build wins
由bldmake處理bld.inf文件得到的abld.bat文件,使得abld命令可用。Abld.bat控制著構建一個項目的方方面面。Abld命令的語法非常地靈活,它擁有許多命令行選項,它們的組合涵蓋了各種構建需求。
注意:這里如果你被提示缺少了一個文件mspdb71.dll,那麼可以通過如下方法解決:在Microsoft Visual Studio .NET 2003的安裝目錄下。你可以在\Common7\IDE這個目錄下找到這個文件。把他拷貝到\Vc7\bin下就可以了。再次提醒前面的環境變數要設置好,否則這里你還會因為缺少link.exe而中止運行。
6、在命令行中輸入:epoc
這時模擬器就會出現。如果你的環境都設置正確的話,那麼模擬器中就會有你剛剛編譯的helloworld,它在模擬器上的名字是「HW」
五、檢查SDK和IDE是否兼容工作
1、重復上面的1-4
2、在命令行中輸入:makmake helloworldbasic vc7,這時會在group文件夾下生成一些文件,其中包含VS2003的工程文件HELLOWORLDBASIC.sln
3、打開VS2003,選擇「打開解決方案(Open Solution)」,打開HELLOWORLDBASIC.sln,然後進行編譯、運行,就會得到第四部分第6步中的效果。(運行的時候可能需要選擇程序epoc.exe)