在Windows中的CMake和Make

14

我知道在Linux上,可以将cmake、make和make install组合使用来生成一个发布版本。例如:

cmake -DCMAKE_BUILD_TYPE=Release ..
make
make install 

然而,在Windows中,我找不到类似的命令来完成同样的工作。通常情况下,如果使用Visual Studio,则需要首先构建.sln项目,然后编译.sln项目,最后运行INSTALL项目。是否有可能像在Linux中那样用几个命令发布?非常感谢。

2个回答

30

你可以使用MSBuild代替make:

cmake -G"Visual Studio 12" ..
msbuild /P:Configuration=Release INSTALL.vcxproj

或者你可以使用CMake的--build参数:

cmake -G"Visual Studio 12" ..
cmake --build . --target INSTALL --config Release

如果你需要相当于没有参数的make命令(即make all)的等效命令,那么你也可以构建ALL_BUILD目标,但是这个目标会随着INSTALL目标一起构建。

1
谢谢,我觉得第二个解决方案可行。 - feelfree

1

除了Fraser的答案之外,要使第一个解决方案工作,可能需要在CMD中以管理员身份从原始路径调用MSBuild

cmake ..
"C:\Program Files (x86)\Microsoft Visual Studio\YEAR\EDITION\MSBuild\15.0\Bin\MSBuild.exe" INSTALL.vcxproj -p:Configuration=Release

请用你对应的值替换YEAREDITION,例如2017和Community。
可能会出现以下错误,这意味着您的环境变量未设置。

error MSB4019: 未找到导入的项目“C:\Microsoft.Cpp.Default.props”。 确认声明中的路径正确,并且文件存在于磁盘上。

环境变量可以直接在系统设置中设置,也可以使用CMD作为管理员设置。(参考来源) 对于Visual Studio 2015及以下版本:
SET VCTargetsPath="C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\vXXX\"

vXXX替换为您相应的版本,例如140

适用于Visual Studio 2017及以上版本:

SET VCTargetsPath="C:\Program Files (x86)\Microsoft Visual Studio\YEAR\EDITION\Common7\IDE\VC\VCTargets\"

用你对应的值替换 YEAREDITION,例如 2017 和 Community。

编辑:

我还注意到,如果设置了环境变量,Visual Studio 2017 中的某些解决方案在“解决方案资源管理器”中不会显示其内容。如果需要,只需将其删除即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接