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}"]
}
]
}
