如何使用CMake + msbuild构建所有配置项

3
我有一个CMake文件,可以生成VS2015解决方案文件MyApp.sln。我使用以下命令分别为每个配置构建MyApp.sln:
msbuild MyApp.sln /property:Configuration=Debug
msbuild MyApp.sln /property:Configuration=RelWithDebInfo
msbuild MyApp.sln /property:Configuration=Release

我想知道是否有人知道如何使用单个msbuild命令构建所有配置。也许CMake可以生成一些"All"配置,例如?

我的问题与如何从命令行使用MSBuild构建所有内容?有所不同,因为我不手动修改MyApp.sln文件,而是由CMake生成,因此我需要在CMake中设置某些选项以创建“all”目标或以一种方式调用msbuild来构建所有配置。


2
可能是重复的问题:如何在命令行中使用MSBuild构建所有内容? - arrowd
可能我的问题有点不同,因为我使用CMake。 - Koban
CMake 用于生成解决方案,但您需要使用 msbuild 进行构建。 - arrowd
你已经尝试过 msbuild MyApp.sln /t:ALL_BUILD /Configuration:"Debug;Release;RelWithDebInfo" 了吗? - vre
通过使用命令msbuild LinesGameQt.sln /t:ALL_BUILD /p:Configuration="Debug;Release;RelWithDebInfo",我得到了“error MSB4126:指定的解决方案配置“Debug;Release;RelWithDebInfo|Win32”无效。请使用Configuration和Platform属性指定有效的解决方案配置(例如MSBuild.exe Solution.sln /p:Configuration=Debug /p:Platform="Any CPU")。 - Dmitriano
1个回答

2

这可能有点傻,但是您可以向CMake添加自定义目标,使项目自身构建:

add_custom_target(build_all_configs
    COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target ALL_BUILD --config Debug
    COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target ALL_BUILD --config Release
)

你可以这样理解...请注意,CMake可以构建自己的项目,因此根本不需要使用MSBuild。

虽然这种方法可以正常工作,但我更愿意configure_file一个批处理脚本来完成相同的任务,并将其放置在适合您需求的位置。这比上面的自定义命令更容易接受。


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