博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自动编译脚本编写指南
阅读量:7091 次
发布时间:2019-06-28

本文共 9410 字,大约阅读时间需要 31 分钟。

  hot3.png

自动编译脚本编写指南

1. 目的

本文作为《自动编译调用接口文件要求.doc》文档的补充,收集了常见开发语言的编译脚本,目的是提供给配置管理员、项目经理以及需要实施自动编译的相关人员,进行参考和借鉴。

2. “简单编译”

对象:针对一些不需要调用编译语言进行编译的源码,例如:Php、Asp、Html等

编写思路:将这些源码文件进行打包压缩,放入output目录中。

Windows脚本样例

@echo offsetlocalif "%zip.4.64%" == "" goto ERRORset PATH=%zip.4.64%;%path%;rem 利用7zip软件的命令行模式进行压缩7z a -r test.zip testIF %ERRORLEVEL% NEQ 0 GOTO ERRORrem 判断是否存在output目录,若存在则删除IF EXIST "output" (RD /s /q "output")md outputrem 将编译后的文件整理放入output文件夹copy test.zip outputtest.zipIF %ERRORLEVEL% NEQ 0 GOTO ERROR@echo onecho Succeeded!endlocalexit 0:ERROR@echo onecho Failed!endlocalexit 1

Linux脚本样例:

#!/bin/sh#判断当前目录是否存在output文件夹,若存在则删除[ -d "output" ]&& rm -rf output#将test文件夹通过tar命令进行打包压缩tar zcvf test.tar.gz test#zip -r test.zip test/ -x '*.svn*'
#判断上一步操作是否正常完成if [ $? -ne 0 ]; then exit 1 ; fi#按照脚本要求,进行创建output文件夹mkdir output#将编译后的文件整理放入output文件夹cp trade.tar.gz outputecho "copy complate"

3. “复杂编译”

对象:针对一些高级语言的源码,需要进行从源语言经过编译程序转化为目标语言,例如:Java、C/C++、.NET等

编写思路:按照《自动编译调用接口文件要求.doc》要求进行编写,将各种高级开发语言通过命令行格式调用编译程序进行编译操作,形成相应系统的脚本。

3.1. Java (利用ant进行编译)

Windows脚本样例:

@echo offsetlocalrem 判断环境变量是否存在if "%java.1.5.0%" == "" goto ERRORif "%ant.1.7.0%" == "" goto ERRORrem 调用环境变量,可根据实际环境需要进行设置set JAVA_HOME=%java.1.5.0%set ANT_HOME=%ant.1.7.0%set PATH=%JAVA_HOME%bin;%ANT_HOMEbin;%PATH%rem 利用ant调用相关xml文件实现编译ant -f build.xmlIF %ERRORLEVEL% NEQ 0 GOTO ERROR@echo onecho Succeeded!endlocalexit 0:ERROR@echo onecho Failed!endlocalexit 1

Linux脚本样例:

#! /bin/sh#判断环境变量是否存在if [ "${java_1_5_0}" = "" ]; then exit 1 ; fiif [ "${ant_1_7_0}" = "" ]; then exit 1 ; fi#调用环境变量,可根据实际环境需要进行设置JAVA_HOME="${jdk1_5_0}"ANT_HOME="${ant_1_7_0}"PATH="${ANT_HOME}/bin:${JAVA_HOME}/bin:${PATH}"export JAVA_HOME ANT_HOME PATHant -f build.xmlif [ $? -ne 0 ]; then exit 1 ;fi

3.2. visual c 6 (利用msdev.com进行编译)

以下脚本是参考C:Program FilesMicrosoft Visual StudioVC98BinVCVARS32.BAT (安装目录为默认c盘时)文件修改而成

@echo offsetlocalrem 如果该环境变量为空,则跳转执行ERRORif "%MSDevDir%" == "" goto ERRORif "%MSVCDir%" == "" goto ERRORif "%VSCommonDir%" == "" goto ERRORif "%OS%" == "" goto ERRORif "%zip.4.64%" == "" goto ERRORset VcOsDir=WIN95if "%OS%" == "Windows_NT" set VcOsDir=WINNTif "%OS%" == "Windows_NT"set PATH=%MSDevDir%BIN;%MSVCDir%BIN;%VSCommonDir%TOOLS%VcOsDir%;%VSCommonDir%TOOLS;%zip.4.64 %;%PATH%if "%OS%" == ""set PATH="%MSDevDir%BIN";"%MSVCDir%BIN";"%VSCommonDir%TOOLS%VcOsDir%";"%VSCommonDir%TOOLS";"%windir%SYSTEM";"%PATH%"set INCLUDE=%MSVCDir%ATLINCLUDE;%MSVCDir%INCLUDE;%MSVCDir%MFCINCLUDE;%INCLUDE%rem 环境变量配置完成set LIB=%MSVCDir%LIB;%MSVCDir%MFCLIB;%LIB%echo building…rem 开始编译msdev.com DrawSys.dsw /make "DrawSys - Win32 Debug" /rebuild /USEENVIF %ERRORLEVEL% NEQ 0 GOTO ERROR7z a -r test.zip .testIF %ERRORLEVEL% NEQ 0 GOTO ERRORIF EXIST "output" (RD /s /q "output")md outputcopy test.zip outputtest.zipIF %ERRORLEVEL% NEQ 0 GOTO ERROR@echo onecho Succeeded!endlocalexit 0:ERROR@echo onecho Failed!endlocalexit 1

3.3. .NET2003(利用Nant进行编译)

Ø .NET2003项目利用devenv.com在和cruisecontrol配合自动编译时可能出现异常停滞现象,利用nant编译无此问题。

Ø .NET2003的Web Application Projects在创建新项目时,必须指定location为URL,利用devenv.com编译时需要IIS支持,利用nant编译不需要IIS支持。

以下脚本的.net2003环境变量是参考C:Program FilesMicrosoft Visual Studio .NET 2003Common7Tools vsvars32.bat (安装目录为默认c盘时)文件修改而成。

通过Nant进行编译,需要建立一个“test.build”的文件,其xml格式如下:

编译脚本示例如下:

@echo offsetlocalrem 如果该环境变量为空,则跳转执行usage@if "%VSINSTALLDIR%"=="" goto Usage@if "%VCINSTALLDIR%"=="" set VCINSTALLDIR=%VSINSTALLDIR%@if "%zip.4.64%"=="" goto ERROR@if "FrameworkDir"=="" goto ERROR@if "FrameworkVersion"=="" goto ERROR@if "FrameworkSDKDir"=="" goto ERROR@if "nant"=="" goto ERROR@set DevEnvDir=%VSINSTALLDIR%@rem@rem Root of Visual C++ installed files.@rem@set MSVCDir=%VCINSTALLDIR%VC7@rem@echo Setting environment for using Microsoft Visual Studio .NET 2003 tools.@echo (If you have another version of Visual Studio or Visual C++ installed and wish@echo to use its tools from the command line, run vcvars32.bat for that version.)@rem@REM %VCINSTALLDIR%Common7Tools dir is added only for real setup.@set PATH=%DevEnvDir%;%MSVCDir%BIN;%VCINSTALLDIR%Common7Tools;%VCINSTALLDIR%Common7Toolsbinprerelease;%VCINSTALLDIR%Common7Toolsbin;%FrameworkSDKDir%bin;%FrameworkDir%%FrameworkVersion%;%zip.4.64%;%PATH%;@set INCLUDE=%MSVCDir%ATLMFCINCLUDE;%MSVCDir%INCLUDE;%MSVCDir%PlatformSDKincludeprerelease;%MSVCDir%PlatformSDKinclude;%FrameworkSDKDir%include;%INCLUDE%@set LIB=%MSVCDir%ATLMFCLIB;%MSVCDir%LIB;%MSVCDir%PlatformSDKlibprerelease;%MSVCDir%PlatformSDKlib;%FrameworkSDKDir%lib;%LIB%@goto end:Usage@echo. VSINSTALLDIR variable is not set.@echo.@echo SYNTAX: %0@goto endrem 环境变量配置完成:endrem 读取test.build文件,开始编译nant -buildfile:test.buildIF %ERRORLEVEL% NEQ 0 GOTO ERRORrem 将编译结果进行打包压缩7z a -r test.zip .testIF %ERRORLEVEL% NEQ 0 GOTO ERRORIF EXIST "output" (RD /s /q "output")md outputcopy test.zip outputtest.zipIF %ERRORLEVEL% NEQ 0 GOTO ERROR@echo onecho Succeeded!endlocalexit 0:ERROR@echo onecho Failed!endlocalexit 1

3.4. .NET2005 (利用devenv.com进行编译)

以下脚本是参考

C:Program FilesMicrosoft Visual Studio 8Common7ToolsVCVARS32.BAT (安装目录为默认c盘时)文件修改而成

@echo offsetlocal@if "%VSINSTALLDIR%"=="" goto error_no_VSINSTALLDIR@if "%VCINSTALLDIR%"=="" goto error_no_VCINSTALLDIR@if "%zip.4.64%"=="" goto ERROR@if "%FrameworkDir%"=="" goto ERROR@if "%FrameworkVersion%"=="" goto ERROR@if "%FrameworkSDKDir%"=="" goto ERROR@set DevEnvDir=%VSINSTALLDIR%Common7IDE@set PATH=%VSINSTALLDIR%Common7IDE;%VSINSTALLDIR%VCBIN;%VSINSTALLDIR%Common7Tools;%VSINSTALLDIR%Common7Toolsbin;%VSINSTALLDIR%VCPlatformSDKbin;%FrameworkSDKDir%bin;%FrameworkDir%%FrameworkVersion%;%VSINSTALLDIR%VCVCPackages;%zip.4.64%;%PATH%@set INCLUDE=%VSINSTALLDIR%VCATLMFCINCLUDE;%VSINSTALLDIR%VCINCLUDE;%VSINSTALLDIR%VCPlatformSDKinclude;%FrameworkSDKDir%include;%INCLUDE%@set LIB=%VSINSTALLDIR%VCATLMFCLIB;%VSINSTALLDIR%VCLIB;%VSINSTALLDIR%VCPlatformSDKlib;%FrameworkSDKDir%lib;%LIB%@set LIBPATH=%FrameworkDir%%FrameworkVersion%;%VSINSTALLDIR%VCATLMFCLIB@goto end:error_no_VSINSTALLDIR@echo ERROR: VSINSTALLDIR variable is not set.@goto end:error_no_VCINSTALLDIR@echo ERROR: VCINSTALLDIR variable is not set.@goto endrem 环境变量配置完成:endecho Building ...rem 开始编译devenv.com test.sln /rebuild "Debug|.NET" /useenvIF %ERRORLEVEL% NEQ 0 GOTO ERROR7z a -r test.zip .testIF %ERRORLEVEL% NEQ 0 GOTO ERRORIF EXIST "output" (RD /s /q "output")md outputcopy test.zip outputtest.zipIF %ERRORLEVEL% NEQ 0 GOTO ERROR@echo onecho Succeeded!endlocalexit 0:ERROR@echo onecho Failed!endlocalexit 1

3.5. .NET2008 (利用devenv.com进行编译)

以下脚本是参考C:Program FilesMicrosoft Visual Studio 9.0Common7Toolsvsvars32.bat (安装目录为默认c盘时)文件修改而成

@echo offsetlocal@if "%VSINSTALLDIR%"=="" goto error_no_VSINSTALLDIR@if "%VCINSTALLDIR%"=="" goto error_no_VCINSTALLDIR@if "%zip.4.64%"=="" goto ERROR@if "%FrameworkDir%"=="" goto ERROR@if "%FrameworkVersion%"=="" goto ERROR@if "%Framework35Version%"=="" goto ERROR@call :GetWindowsSdkDir@if not "%WindowsSdkDir%" == "" (set "PATH=%WindowsSdkDir%bin;%PATH%"set "INCLUDE=%WindowsSdkDir%include;%INCLUDE%"set "LIB=%WindowsSdkDir%lib;%LIB%")@set DevEnvDir=%VSINSTALLDIR%Common7IDE@set PATH=%VSINSTALLDIR%Common7IDE;%VCINSTALLDIR%BIN;%VSINSTALLDIR%Common7Tools;%FrameworkDir%%Framework35Version%;%FrameworkDir%%FrameworkVersion%;%VCINSTALLDIR%VCPackages;%PATH%@set INCLUDE=%VCINSTALLDIR%ATLMFCINCLUDE;%VCINSTALLDIR%INCLUDE;%INCLUDE%@set LIB=%VCINSTALLDIR%ATLMFCLIB;%VCINSTALLDIR%LIB;%LIB%@set LIBPATH=%FrameworkDir%%Framework35Version%;%FrameworkDir%%FrameworkVersion%;%VCINSTALLDIR%ATLMFCLIB;%VCINSTALLDIR%LIB;%LIBPATH%@goto end:GetWindowsSdkDir@call :GetWindowsSdkDirHelper HKLM > nul 2>&1@if errorlevel 1 call :GetWindowsSdkDirHelper HKCU > nul 2>&1@if errorlevel 1 set WindowsSdkDir=%VCINSTALLDIR%PlatformSDK@exit /B 0:GetWindowsSdkDirHelper@for /F "tokens=1,2*" %%i in ('reg query "%1SOFTWAREMicrosoftMicrosoft SDKsWindows" /v "CurrentInstallFolder"') DO (if "%%i"=="CurrentInstallFolder" (SET "WindowsSdkDir=%%k"))@if "%WindowsSdkDir%"=="" exit /B 1@exit /B 0:error_no_VSINSTALLDIR@echo ERROR: VSINSTALLDIR variable is not set.@goto end:error_no_VCINSTALLDIR@echo ERROR: VCINSTALLDIR variable is not set.@goto endrem 环境变量配置完成:endecho Building...rem 开始编译devenv.com test.sln /rebuild "release|win32" /useenvIF %ERRORLEVEL% NEQ 0 GOTO ERROR7z a -r test.zip .testIF %ERRORLEVEL% NEQ 0 GOTO ERRORIF EXIST "output" (RD /s /q "output")md outputcopy test.zip outputtest.zipIF %ERRORLEVEL% NEQ 0 GOTO ERROR@echo onecho Succeeded!endlocalexit 0:ERROR@echo onecho Failed!endlocalexit 1

3.6. ios (利用xcodebuild进行编译)

#!/bin/bash v1=`pwd` echo "#####################" security unlock-keychain -p 123456 ${HOME}/Library/Keychains/login.keychain if [ $? -ne 0 ]; then exit 1 ;fi echo "#####################" cd $v1/Project/RemoteControl xcodebuild  -workspace RemoteControlWS.xcworkspace/ -scheme RemoteControl -configuration 'Release' CODE_SIGN_IDENTITY="iPhone Developer"  PROVISIONING_PROFILE="" if [ $? -ne 0 ]; then exit 1 ;fi echo "#####################" cd $v1/ xcrun -sdk iphoneos PackageApplication -v Project/RemoteControl/DerivedData/RemoteControlWS/Build/Products/Release-iphoneos/RemoteControl.app -o $v1/RemoteControl.ipa if [ $? -ne 0 ]; then exit 1 ;fi

security find-identity ${HOME}/Library/Keychains/login.keychain

ls ${HOME}/Library/MobileDevice/Provisioning\ Profiles/

 

3.7. MSYS

@echo offset path=C:\MSYS\bin;C:\MSYS\mingw\bin;%path%make

3.8. android

安装jdk,ant,andriod sdk

3.9. metro app

vs2012

devenv

makeappx

转载于:https://my.oschina.net/tadcat/blog/150622

你可能感兴趣的文章
凡事预则立
查看>>
函数的定义域【基础辅导】
查看>>
Selenium 自动化验收测试
查看>>
Alpha冲刺随笔集
查看>>
站立会议04
查看>>
jquery 阻止默认事件(传播和冒泡)
查看>>
51Nod 1002 数字三角形 Label:水水水 && 非学习区警告
查看>>
基于Vue + webpack + Vue-cli 实现分环境打包项目
查看>>
shell编程===执行shell脚本的四种方法
查看>>
xv6操作系统学习笔记
查看>>
JAVA获取服务器路径的方法
查看>>
sys模块
查看>>
Gulp
查看>>
JS 常用 函数
查看>>
Oracle自动存储管理 ASMLib的支持变化
查看>>
hdu5079
查看>>
HttpUrlConnection的setDoOutput与setDoInput的区别
查看>>
Knockoutjs自学记录(一)~本地新建展示实例
查看>>
常量和数据类型
查看>>
javascript DOM操作
查看>>