zoukankan      html  css  js  c++  java
  • 用VS的命令行工具编译工程

    作者:朱金灿

    来源:http://blog.csdn.net/clever101

     

           在VS2008下面提供了devenv.com命令行方式,我们可以从VS安装目录..\MicrosoftVisual Studio 9\Common7\IDE下面找到它,以下是几个常见用法(VS 2005对应的目录下也有这样的工具):

     

    用法:

    devenv.com  [solutionfile | projectfile |anyfile.ext]  [switches]

     

    devenv.com的第一个参数通常是一个解决方案文件或项目文件。

    如果您希望在编辑器中自动打开文件,

    也可以使用任何其他文件作为第一个参数。当您输入项目文件时,IDE

    会在项目文件的父目录中查找与该项目文件具有相同

    基名称的 .sln 文件。如果不存在这样的 .sln 文件,

    IDE 将查找引用该项目的单个 .sln 文件。如果不存在这样的单个

    .sln 文件,则 IDE 将创建一个具有默认 .sln 文件名的未保存

    的解决方案,其基名称与项目文件的基名称相同。

     

    命令行生成:

    devenv.comsolutionfile.sln /build [ solutionconfig ] [ /project projectnameorfile [

     /projectconfig name ] ]

    可用的命令行开关:

     

    /Build          使用指定的解决方案配置生成解决方案或

                    项目。例如“Debug”。如果可能存在多个平台,

                    则配置名称必须用引号括起来

                    并且包含平台名称。例如“Debug|Win32”。

    /Clean          删除生成结果。

    /Command        启动 IDE 并执行该命令。

    /Deploy         生成并部署指定的生成配置。

    /Edit           在此应用程序的运行实例中打开

                    指定文件。如果没有正在运行的实例,

                    则启动一个具有简化窗口布局的新实例。

    /LCID           设置 IDE 中用于用户界面的默认语言。

    /Log            将 IDE 活动记录到指定的文件以用于故障排除。

    /NoVSIP         禁用用于 VSIP 测试的 VSIP 开发人员许可证密钥。

    /Out            将生成日志追加到指定的文件中。

    /Project        指定生成、清理或部署的项目。

                    必须和 /Build、/Rebuild、/Clean 或 /Deploy 一起使用。

    /ProjectConfig  重写解决方案

                    配置中指定的项目配置。例如“Debug”。如果可能存在

                    多个平台,则配置名称必须用引号括起来

                    并包含平台名称。例如“Debug|Win32”。

                    必须和 /Project 一起使用。

    /Rebuild        先清理,然后使用指定配置生成

                    解决方案或项目。

    /ResetAddin     移除与特定外接程序关联的命令和命令用户界面。

    /ResetSettings  恢复 IDE 的默认设置,还可以重置为

                    指定的 VSSettings 文件。

    /ResetSkipPkgs  清除所有添加到 VSPackages 的 SkipLoading 标记。

    /Run            编译并运行指定的解决方案。

    /RunExit        编译并运行指定的解决方案然后关闭 IDE。

    /SafeMode       以安全模式启动 IDE,加载最少数量的窗口。

    /Upgrade        升级项目或解决方案以及其中的所有项目。

                    并相应地创建这些文件的备份。有关备份

                    过程的更多信息,请参见

                    “Visual Studio 转换向导”上的帮助。

     

    产品特定的开关:

     

    /debugexe       打开要调试的指定可执行文件。

                    命令行的其余部分作为它的参数

                    传递到此执行文件。

    /useenv         使用 PATH、INCLUDE、LIBPATH和 LIB 环境变量

                    而不是使用 VC++ 生成的 IDE 路径。

     

    要从命令行附加调试器,请使用:

            VsJITDebugger.exe -p <pid>

     

     

        编译的工程版本必须和VS版本对应,否则会提示该项目没有被转换。

    还有一点需要注意,如果在sln里面设置了dependence,一旦Clear某个Project,会导致其他相依赖的Project也会被Clear,造成编译时间上的浪费,为了节省时间,你可以重命名sln或者删除sln,这样编译就不会考虑工程间依赖关系。

     

    devenv 的第一个参数通常是一个解决方案文件或项目文件。如果您希望在编辑器中自动打开文件,也可以使用任何其他文件作为第一个参数。当您输入项目文件时,IDE会在项目文件的父目录中查找与该项目文件具有相同基名称的 .sln 文件。如果不存在这样的 .sln 文件,IDE 将查找引用该项目的单个 .sln 文件。如果不存在这样的单个.sln 文件,则 IDE 将创建一个具有默认 .sln 文件名且未保存的解决方案,其基名称与项目文件的基名称相同。

     

    下面以一个批处理例子说明devenv.com的用法。现在我们要编译著名的cximage600工程。cximage600工程有下面的项目:

                                  

                  我们把demo工程设为主调用工程。然后我写一个批处理文件编译CxImgLib.sln。


    rem ************************************************
    rem * Script to compile the solutions of CxImgLib *
    rem * Created by: zhujincan                       *
    rem * Created 2012.12.06                          *
    rem ************************************************
    
    
    rem set environment variables:
    set _devenv="%VS90COMNTOOLS%..\..\Common7\IDE\devenv.com"
    
    
    rem set compile log
    set _log="%~dp0compileResults.log"
    
    echo [%DATE% %Time%] Start compile sequence >%_log%
    echo Used compile configuration is %buildAnyCPU% >>%_log%
    
    rem Start compile************************************************
    set _solution_file="%~dp0CxImgLib.sln"
    %_devenv% %_solution_file% /build "Debug|Win32" /Out %_log%
    if not %errorlevel% == 0 echo %_solution_file% failed!   Error: %errorlevel% >>%_log%
    if %errorlevel% == 0 echo %_solution_file% compiled successful >>%_log%
    
    rem If compile failed stop processing:
    if not %errorlevel% == 0 pause
    
    echo [%DATE% %Time%] Finished compile sequence >>%_log%
    
    pause     
    

        该批处理文件放在源码根目录下(即和解决方案文件的同一级目录下),生成日志放在源码根目录下compileResults.log中.这个批处理文件可以和svn的源码更新命令绑在一起实现从源码更新到编译,也可以放在服务器上作为每日构建的脚本。

    参考文献:

    1. VS开发用命令行自动编译工程

      

             如果你觉得我的博客对你有帮助,请在下面网址中博客之星评选活动中投我一票:

    http://vote.blog.csdn.net/item/blogstar/clever101(单击候选人介绍下面的投他一票那个按钮)

    参与投票有机会获奖:

        最佳贡献奖:通过微博分享活动就有机会获得30元充值卡一张(每周抽选5名)
        幸运奖:凡参与投票用户就有机会获得精美小礼品一份。(每周抽选5名)
        积极参与奖:所有参与投票并符合条件的用户均可获得20个下载积分。








  • 相关阅读:
    centos6.5的开机自动部署出现unsupported hardware detected
    Nginx的安装
    sshpass的使用方法
    dhcp 的安装和配置文件
    SMBus总线概述
    SMBus与I2C的差别
    vim搭建笔记
    pcie dma的玩法
    Virtex6 PCIe 超简版基础概念学习(二)
    揭开Altera公司支持OpenCL的设计工具的神秘面纱
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6470676.html
Copyright © 2011-2022 走看看