vc批處理編譯
⑴ vc命令行下怎麼使用資源編譯器
rc.exe用於鏈接擴展名為.rc的資源腳本文件。其格式為:
rc 資源腳本文件名.rc
經過該步之後,如果沒有錯誤,會生成 擴展名為 .res 的資源文件
然後把已編譯好的 obj文件與 res文件鏈接(obj是目標文件,在命令行下可以用cl.exe生成),就可以形成 exe或dll文件。這一步需要用到鏈接器 linker.exe。其格式為:
Link /subsystem:windows obj文件名.obj 資源文件名.res
最終將會產生 exe 。
⑵ 如何用批處理實現vc2010工程的編譯請高手指點,謝謝
用nmake.exe
命令語法如下:
NMAKE [option...] [macros...] [targets...] [@commandfile...]
說明:其中,options是NMAKE的選項,macros是在命令行中的宏定義,targets是NMAKE的目標文件列表,commandfile是包含命令行輸入的文本文件(或響應文件)。
NMAKE 使用指定 /F 選項的Makefile(生成文件,通常名字是makefile);如果未指定 /F 選項,則使用當前目錄下的Makefile。如果未指定Makefile,則 NMAKE 使用推理規則生成命令行 targets。
關鍵是這個makefile文件的編寫。給你個例子 參考
BIN = cppunit
DEBUG = 1
# dynamic dll 1, static lib 2, exe 3
TARGET_TYPE = 1
# thread model, 0 single, 1 multiple static, 2 multiple dll
THREAD_MODEL = 2
CPU = x86
UNICODE = 0
CINCLUDE_PATH = /I. /I..\..\include
LLIBS =
DLLFLAGS =
CFLAGS = /W4 /Zc:forScope /Zc:wchar_t /EHsc
CFLAGS = $(CFLAGS) $(CINCLUDE_PATH)
!IF "$(UNICODE)" == "1"
CFLAGS = $(CFLAGS) /D"_UNICODE" /D"UNICODE"
!ENDIF
LDFLAGS = /NOLOGO /MACHINE:$(CPU)
LDFLAGS = $(LDFLAGS) $(LLIBS)
TARGET =
!IF "$(DEBUG)" == "1"
TARGET = $(BIN)d
CFLAGS = $(CFLAGS) /Od /Ob0 /ZI /D"_DEBUG"
LDFLAGS = $(LDFLAGS) /DEBUG
!ELSE
TARGET = $(BIN)
CFLAGS = $(CFLAGS) /O2 /Ob1 /Zi /D"NDEBUG"
LDFLAGS = $(LDFLAGS) /OPT:REF /OPT:ICF
!ENDIF
LINK_TOOL =
!IF "$(TARGET_TYPE)" == "1"
LINK_TOOL = LINK /DLL /MANIFEST:NO
TARGET = $(TARGET).dll
!ELSEIF "$(TARGET_TYPE)" == "2"
LINK_TOOL = LIB
TARGET = $(TARGET).lib
!ELSE
TARGET = $(TARGET).exe
LINK_TOOL = LINK /MANIFEST:NO
!ENDIF
!IF "$(THREAD_MODEL)" == "1"
!IF "$(DEBUG)" == "0"
DLLFLAGS = /MT
!ELSE
DLLFLAGS = /MTd
!ENDIF
!ENDIF
!IF "$(THREAD_MODEL)" == "2"
!IF "$(DEBUG)" == "0"
DLLFLAGS = /MD
!ELSE
DLLFLAGS = /MDd
!ENDIF
!ENDIF
CFLAGS = $(CFLAGS) $(DLLFLAGS)
SRC = \
AdditionalMessage.cpp \
Asserter.cpp \
BeOsDynamicLibraryManager.cpp \
BriefTestProgressListener.cpp \
CompilerOutputter.cpp \
DefaultProtector.cpp \
DllMain.cpp \
DynamicLibraryManager.cpp \
.cpp \
Exception.cpp \
Message.cpp \
PlugInManager.cpp \
PlugInParameters.cpp \
Protector.cpp \
ProtectorChain.cpp \
RepeatedTest.cpp \
ShlDynamicLibraryManager.cpp \
SourceLine.cpp \
StringTools.cpp \
SynchronizedObject.cpp \
Test.cpp \
TestAssert.cpp \
TestCase.cpp \
TestCaseDecorator.cpp \
TestComposite.cpp \
TestDecorator.cpp \
TestFactoryRegistry.cpp \
TestFailure.cpp \
TestLeaf.cpp \
TestNamer.cpp \
TestPath.cpp \
TestPlugInDefaultImpl.cpp \
TestResult.cpp \
TestResultCollector.cpp \
TestRunner.cpp \
TestSetUp.cpp \
TestSuccessListener.cpp \
TestSuite.cpp \
TestSuiteBuilderContext.cpp \
TextOutputter.cpp \
TextTestProgressListener.cpp \
TextTestResult.cpp \
TextTestRunner.cpp \
TypeInfoHelper.cpp \
UnixDynamicLibraryManager.cpp \
Win32DynamicLibraryManager.cpp \
XmlDocument.cpp \
XmlElement.cpp \
XmlOutputter.cpp \
XmlOutputterHook.cpp
OBJECTS = $(SRC:.cpp=.obj)
all : $(TARGET)
$(TARGET) : $(OBJECTS)
$(LINK_TOOL) $(LDFLAGS) $(OBJECTS) /OUT:$(TARGET)
.c.obj::
$(CC) /c $(CFLAGS) $<
#
.cpp.obj::
$(CC) /c $(CFLAGS) $<
#
clean :
del /q $(TARGET)
del /q $(OBJECTS)
del /q *.pdb
del /q *.idb
能用ide還是盡量用ide吧,多方便。
⑶ 為什麼VC6.0編譯程序的時候總是卡住死機
VC++6.0總是這樣..別說6000行..有時幾百行也會這樣..我遇到這種情況時先保存所有文件..然後用寫好的結束VC進程的批處理文件瞬間關閉.然後打開重新編譯..一般先編譯..再生成..就不會出現這種情況了..
⑷ vc++面向對象中怎樣編寫批處理的編譯命令並保存在bat文件中
按照VC++的MSDN上面編譯器的選項去寫參數。
在VC安裝目錄下有vcvarsall.bat和vcvars32.bat兩個文件,請先依次運行這兩個BAT之後,在進行編譯工程。
先定義工程,然後依次使用cl.exe link.exe lib.exe ml.exe就可以編譯工程了。
具體內容請參見Windows SDK的說明文檔。
⑸ 批處理添加VC編譯環境變數
用VBScript直接改注冊表
⑹ 在VC里如何用Makefile文件編譯
運行cmd.exe (or command.com in win9x)->進到vc/bin目錄->運行vc-vars32.bat->進到makefile 所在的目錄->nmake /f makefile
從sourceforge上下載下來的libjpeg源代碼中有一個makefile.vc的文件,可以通過nmake /f makefile.vc [nodebug=1]來編譯libjpeg,但是只能編譯靜態庫,如果需要編譯dll以便在emacs等程序中使用的話,需要修改makefile.vc和jmorecfg.h文件。在makefile.vc文件中添加編譯dll規則:
以下內容為程序代碼:
libjpeg.lib: $(LIBOBJECTS) $(RM) libjpeg.lib lib -out:libjpeg.lib $(LIBOBJECTS) #
添加以下這行 libjpeg.dll: $(LIBOBJECTS) $(RM) libjpeg.dll link -dll -out:libjpeg.dll $(LIBOBJECTS) 在jmorecfg.h中添加#define _WIN32_#define JPEG_DLL 然後nmake /f makefile.vc nodebug=1就可以編譯了。
將makefile復制為一個.mak文件,然後用VC打開即可!
.mak 就是一個makefile
可以指定怎樣編譯(命令行,必須先設置VC命令行環境)
vcvars32.bat可設置環境,在vc98/bin下 nmake /f XXXX.mak
如果有一個makefile就只要nmake就可以了。
⑺ 怎樣使用VC軟體編譯並運行C語言程序
使用VS2008編譯C程序,本文中使用VS2008 professional版本。
1.打開VS2008,這就不用多說了吧
2.打開了VS2008的主界面,然後選擇,文件→新建→項目
彈出如圖對話框
3、在項目類型中選擇VC++→win32 然後在右側模板中選擇win32控制台應用程序,再在下面輸入一個名稱(項目名稱,不用帶.C)選擇保存位置後確定好了,彈出個對話框,不管它,下一步

⑻ 如何用 Sublime Text 實現C/C++代碼的編譯運行
安裝Sublime Text3編輯器
Windows下有安裝版和便攜版之分,這里建議大家使用安裝版。安裝的過程十分簡單,只需一路next,最後finish即可。由於編輯器原生對中文支持不佳,需要安裝編碼插件進行改善
下載並解壓縮,將得到的ConvertToUTF8-master文件夾更名為ConvertToUTF8,復制到編輯器的自定義封裝包目錄中
即編輯器Preferences/BrowesPackages...菜單項打開的目錄。
獲取VC編譯器中的定義及庫文件:
很多時候,我們僅僅是為了編譯某個小程序,完全沒有必要安裝Visual Studio那樣的大塊頭。因此,網上就有人從中提取出了VC編譯器。
下載並解壓縮,將得到的VC2008文件夾復制到Sublime Text3編輯器的安裝目錄中。該目錄的一般路徑為:
D:\ProgramFiles\Sublime Text 3。
編寫批處理文件:
編寫一個執行編譯、連接命令的批處理文件,保存到VC編譯器的目錄中。該目錄一般為:
D:\ProgramFiles\Sublime Text 3\ VC2008。
該批處理文件的內容如下:
@echo off
rem 請根據 VC2008文件夾的目錄修改下面的 VC_Dir 環境變數!
set VC_Dir=D:\ProgramFiles\Sublime Text 3\VC2008
set include=^
%VC_Dir%\include;^
%VC_Dir%\PlatformSDK\Include;^
%VC_Dir%\atlmfc\include;^
%include%
set lib=^
%VC_Dir%\lib;^
%VC_Dir%\PlatformSDK\Lib;^
%VC_Dir%\atlmfc\lib;^
%lib%
set path=^
%VC_Dir%\bin;^
%PATH%
set VC_Dir=
echo on
@nmake
由於這里使用nmake工具執行編譯命令,因此需要為你的每個工程建立一個Makefile文件。關於Makefile文件的資料,可以參考羅雲彬大哥的《Windows環境下32位匯編語言程序設計》一書中的示例。隨後會發搭建32位匯編語言環境的方法。事實上C語言版本就是它的衍生品,使用Sublime Text3要比羅哥推薦的EditPlus編輯器漂亮和好用很多。
配置Sublime Text 3編譯系統
創建一個名為C++.sublime-build的文件,復制到編輯器的用戶自定義配置文件夾內,該目錄一般為:
C:\Users\用戶名\AppData\Roaming\SublimeText 3\Packages\User
即編輯器Preferences/BrowesPackages...菜單打開的目錄下的User文件夾中,如果此文件夾不存在,可以自行創建。根據批處理文件所在目錄修改C++.sublime-build文件中的cmd路徑,本例中為:
D:\\ProgramFiles\\Sublime Text 3\\VC2008\\000MyBuildVC2008.bat。
注意路徑中使用的是雙斜杠。
C++.sublime-build文件的內容如下:
{
// 請根據你的批處理文件所在目錄修改下面的路徑:
"cmd" :["D:\\Program Files\\Sublime Text 3\\VC2008\\000MyBuildVC2008.bat","/Fo${file_base_name}", "/O2", "${file}"],
"file_regex" :"^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir" : "${file_path}",
"selector" :"source.c, source.c++",
"encoding" :"cp936",
"variants" :
[
{
"name" : "Run",
"cmd" : ["CMD", "/U","/C", "CL /Fo${file_base_name} /O2 ${file} &&${file_base_name}"]
}
]
}
