强制msbuild构建一个在解决方案配置中未选中的项目

Bea*_*ker 9 msbuild cmake visual-studio

我在命令行使用msbuild来构建生成的解决方案文件:

msbuild /p:Configuration=Release /p:Platform=Win32 build\zlib\vc-9.0\x86\zlib.sln
Run Code Online (Sandbox Code Playgroud)

问题是cmake生成的解决方案有一个项目INSTALL,它不是默认构建的.

minigzip:
  Die Datei "c:\Library\build\zlib\vc-9.0\x86\minigzip.tmp_Release_Win32.vcproj
  " wird gelöscht.
ALL_BUILD:
  Die Datei "c:\Library\build\zlib\vc-9.0\x86\ALL_BUILD.tmp_Release_Win32.vcpro
  j" wird gelöscht.
INSTALL:
  The project "INSTALL" is not selected for building in solution configuration
  "Release|Win32".
Done Building Project "c:\Library\build\zlib\vc-9.0\x86\zlib.sln" (default targ
ets).


Build succeeded.
    0 Warning(s)
    0 Error(s)
Run Code Online (Sandbox Code Playgroud)

如何在不手动打开灵魂的情况下强制构建目标INSTALL并设置配置的复选框?

一种解决方案是直接调用vcproj文件(就像我在这里做的那样)

msbuild /p:Configuration=Release /p:Platform=Win32 build\zlib\vc-9.0\x86\INSTALL.vcproj
Run Code Online (Sandbox Code Playgroud)

但这会打印警告

Microsoft (R)-Buildmodul, Version 3.5.30729.6387
[Microsoft .NET Framework, Version 2.0.50727.6400]
Copyright (C) Microsoft Corporation 2007. Alle Rechte vorbehalten.

Build started 06.07.2013 17:07:57.
Project "c:\Library\build\zlib\vc-9.0\x86\INSTALL.vcproj" on node 0 (default ta
rgets).
c:\Library\build\zlib\vc-9.0\x86\INSTALL.vcproj : warning MSB4098: MSBuild is i
nvoking VCBuild to build this project. Project-to-project references between VC
++ projects (.VCPROJ) and C#/VB/VJ# projects (.CSPROJ, .VBPROJ, .VJSPROJ) are n
ot supported by the command-line build systems when building stand-alone VC++ p
rojects. Projects that contain such project-to-project references will fail to
build. Please build the solution file containing this project instead.
Done Building Project "c:\Library\build\zlib\vc-9.0\x86\INSTALL.vcproj" (defaul
t targets).


Build succeeded.
Run Code Online (Sandbox Code Playgroud)

如您所见,构建成功.我可以通过首先调用解决方案来确保正确的构建,但我想强制解决方案也构建项目INSTALL.

有任何想法吗?

sti*_*ijn 10

据我所知,这是不可能的.查看msbuild的命令行选项和解决方案文件,没有什么可以支持它.但是,既然您正在使用cmake,您可以使用它来为您构建所有内容,而无需手动执行.我发现这个帖子基本上和你一样问了同样的问题,并且使用这个想法有正确的语法我已经把它评论了:

cmake --build . --target install
Run Code Online (Sandbox Code Playgroud)

devenvcmmand行选项看,它似乎确实具有您所追求的功能.即使在Configuration Manager中未启用,也会强制构建给定项目:

devenv build\zlib\vc-9.0\x86\zlib.sln /Build Release /project INSTALL
Run Code Online (Sandbox Code Playgroud)


And*_*dré 5

stijn 的答案是通过 cmake 构建目标的“惯用”方式。

但是请注意,MSbuild 可以生成解决方案文件项目文件。除了调用msbuild zlib.sln,您还可以调用msbuild ALL_BUILD.vcxproj.

同样,您可以调用msbuild INSTALL.vcxproj.