代码之家  ›  专栏  ›  技术社区  ›  amit kumar

如何在Windows上使用CMake进行非交互式构建?

  •  10
  • amit kumar  · 技术社区  · 15 年前

    我想在Windows上使用CMake设置自动生成。我正在使用VisualStudio2005。

    :以下是我正在使用的:

    我将devenv.exe设置为我的路径。然后运行下面的命令进行构建。我用哈德逊来建造。

    devenv Crackpot.sln/build Debug/project ALL\u build

    http://blogs.msdn.com/aaronhallberg/archive/2007/06/29/building-from-the-command-line-with-devenv.aspx 更喜欢使用“devenv”而不是“denenv.exe”,因为后者可能会生成GUI,从而挂起构建。

    4 回复  |  直到 14 年前
        1
  •  30
  •   Aaditya Kalsi    10 年前

    我发现最简单的方法是:
    % cmake --build "buildDir"
    您还可以添加 --target --config 'Debug|Release|...'

        2
  •  9
  •   pkit    15 年前

    可以从命令行运行CMake。

    cmake.exe -G"Visual Studio 8 2005" -H<source_dir> -B<build_dir>
    

    请注意,-H和-B选项没有记录在这里。但它们可以用于在命令行上显式定义源和构建目录。

    C:\Program Files (x86)\CMake 2.6\bin>cmake
      cmake version 2.6-patch 4
      Usage
    
      cmake [options] <path-to-source>
      cmake [options] <path-to-existing-build>
    
      Options
      -C <initial-cache>          = Pre-load a script to populate the cache.
      -D <var>:<type>=<value>     = Create a cmake cache entry.
      -U <globbing_expr>          = Remove matching entries from CMake cache.
      -G <generator-name>         = Specify a makefile generator.
      -Wno-dev                    = Suppress developer warnings.
      -Wdev                       = Enable developer warnings.
      -E                          = CMake command mode.
      -i                          = Run in wizard mode.
      -L[A][H]                    = List non-advanced cached variables.
      -N                          = View mode only.
      -P <file>                   = Process script mode.
    

    这是可用的发电机。

    Generators
    
    The following generators are available on this platform:
      Borland Makefiles           = Generates Borland makefiles.
      MSYS Makefiles              = Generates MSYS makefiles.
      MinGW Makefiles             = Generates a make file for use with
                                    mingw32-make.
      NMake Makefiles             = Generates NMake makefiles.
      Unix Makefiles              = Generates standard UNIX makefiles.
      Visual Studio 6             = Generates Visual Studio 6 project files.
      Visual Studio 7             = Generates Visual Studio .NET 2002 project
                                    files.
      Visual Studio 7 .NET 2003   = Generates Visual Studio .NET 2003 project
                                    files.
      Visual Studio 8 2005        = Generates Visual Studio .NET 2005 project
                                    files.
      Visual Studio 8 2005 Win64  = Generates Visual Studio .NET 2005 Win64
                                    project files.
      Visual Studio 9 2008        = Generates Visual Studio 9 2008 project files.
      Visual Studio 9 2008 Win64  = Generates Visual Studio 9 2008 Win64 project
                                    files.
      Watcom WMake                = Generates Watcom WMake makefiles.
      CodeBlocks - MinGW Makefiles= Generates CodeBlocks project files.
      CodeBlocks - Unix Makefiles = Generates CodeBlocks project files.
      Eclipse CDT4 - MinGW Makefiles
                                  = Generates Eclipse CDT 4.0 project files.
      Eclipse CDT4 - NMake Makefiles
                                  = Generates Eclipse CDT 4.0 project files.
      Eclipse CDT4 - Unix Makefiles
                                  = Generates Eclipse CDT 4.0 project files.  
    
        3
  •  3
  •   OregonGhost    15 年前

    我不确定我是否理解这个问题。您使用它的方式与任何其他构建系统完全相同。只需指定“VisualStudio8 2005”(有点奇怪,但是您可以通过调用cmake(不带参数)获得所有受支持系统的列表),就可以在命令行上使用 devenv.exe /build 或者使用MSBuild。

    唯一有点复杂的是,如果您想在未安装VisualStudio时生成解决方案,比如在构建服务器上。当然,你可以安装它,但我不想安装你不需要的东西。在这种情况下,您必须伪造它以接受MSBuild作为构建命令行(通过在命令行中指定批处理文件作为构建工具,只需重新排序参数,以便MSBuild接受它们),这样它就不会开始抱怨它如何错过Visual Studio(这太疯狂了,因为CMake人员来自命令行世界…)

    哦,如果您真正想要的只是在命令行上构建现有的VisualStudio解决方案,那么您不需要CMake。只需调用MSBuild或 devenv /build .

        4
  •  0
  •   Mohith Maratt    9 年前

    这是我创建的bat文件。每次删除并创建新的生成文件夹时,它都会在指定的生成文件夹中自动创建解决方案。

    RMDIR C:\Users\abc /s /q
    
    if EXIST C:\Users\abc GOTO FALIURE
    
    MKDIR C:\Users\abc\build
    CD C:\Users\abc\build
    cmake -G "Visual Studio 12" "C:\Users\abc\src"
    EXIT
    
    :FALIURE
    CLS
    echo "Failed to delete BUILD directory, Close all related files and programs and try again."
    pause
    EXIT