【问题标题】:Run CMake Install target with incredibuild使用 incredibuild 运行 CMake 安装目标
【发布时间】:2016-01-05 12:56:05
【问题描述】:

我正在尝试使用 incredibuild 在命令行中加速 cmake 项目的编译,使用 Visual Studio 2013 进行编译。 我可以使用以下命令编译和安装库:

BuildConsole zlib.sln /prj=INSTALL /cfg="Debug|x64"

但它跳过了安装部分:

Microsoft Visual Studio 2013 Version 12.0.40629.0.
Copyright (C) Microsoft Corp. All rights reserved.
1>------ Skipped Build: Project: INSTALL, Configuration: Debug x64 ------
1>Project not selected to build for this solution configuration

但是,如果我从 Visual Studio 执行它,它可以正常工作:

Initializing...

Microsoft Visual Studio 2013 Version 12.0.40629.0.
Copyright (C) Microsoft Corp. All rights reserved.
1>------ Build started: Project: INSTALL, Configuration: Debug x64 ------
1>Build started 1/6/2016 4:52:09 PM.
1>PrepareForBuild:
1>  Creating directory "x64\Debug\INSTALL\INSTALL.tlog\".
1>InitializeBuildStatus:
1>  Creating "x64\Debug\INSTALL\INSTALL.tlog\unsuccessfulbuild" because     "AlwaysCreate" was specified.
1>PostBuildEvent:
1>  -- Install configuration: "Debug"
1>-- Installing: C:/work/dev/workspace/thirdparty/tmp/install/zlib/lib/zlibd.lib
1>-- Installing: C:/work/dev/workspace/thirdparty/tmp/install/zlib/bin/zlibd.dll
1>-- Installing: C:/work/dev/workspace/thirdparty/tmp/install/zlib/lib/zlibstaticd.lib
1>-- Installing:     C:/work/dev/workspace/thirdparty/tmp/install/zlib/include/zconf.h
1>-- Installing: C:/work/dev/workspace/thirdparty/tmp/install/zlib/include/zlib.h
1>-- Installing: C:/work/dev/workspace/thirdparty/tmp/install/zlib/share/man/man3/zlib.3
1>-- Installing: C:/work/dev/workspace/thirdparty/tmp/install/zlib/share/pkgconfig/zlib.pc
1>  ...
1>  
1>FinalizeBuildStatus:
1>  Deleting file "x64\Debug\INSTALL\INSTALL.tlog\unsuccessfulbuild".
1>  Touching "x64\Debug\INSTALL\INSTALL.tlog\INSTALL.lastbuildstate".
1>
1>Build succeeded.
1>
1>Time Elapsed 00:00:00.40
========== Build: 1 succeeded, 0 failed, 6 up-to-date, 0 skipped ==========

有什么线索吗?

谢谢! 伊曼纽尔

【问题讨论】:

    标签: visual-studio-2013 cmake incredibuild


    【解决方案1】:

    此回复来自 IncrediBuild 团队: 我们已经在我们的实验室下载并尝试了与 Microsoft Visual Studio 2013 相同的 zlib-1.2.8 版本。 我们发现在 zlib 中默认情况下,当使用 cmake 生成 .sln 和 .vcxproj 文件时,生成的 INSTALL 项目不包含在构建配置“Debug|x64”中。 在为“Debug|x64”构建生成的 zlib.sln 时,它不会构建 INSTALL 项目,不是通过 VS IDE 也不是通过 BuildConsole 命令 - 这很好,因为该项目未包含在构建配置中。 一旦 INSTALL 项目被标记为选择在“Debug|x64”中构建 配置,不存在跳过它的问题,并且项目已正确构建。 选择为“Debug|x64”显式构建此项目或修复 zlib cmake 以包含要在“Debug|x64”中构建的此项目可以解决问题。

    免责声明:作者是 IncrediBuild 员工

    【讨论】:

    • zlib 中的错误?您是否已提交或提供了补丁?
    • 我不认为这是一个适当的修复,因为 CMAKE 不支持生成已将 INSTALL 设置为选中的解决方案,并且我们必须经常重新生成我们的 CMAKE,而这发生在构建服务器上。当有人不得不手动登录并在每次 cmake 重新生成时重新选中复选框时,构建服务器的意义就大大丧失了
    【解决方案2】:

    适合我的解决方案是首先在解决方案上运行 MSBuild,然后在 Install.vcxproj 上单独运行。这与 IncrediBuild 完全无关,我只使用普通的 MSBuild。我想可以在解决方案上使用 IncrediBuild,然后在安装项目上使用 MSBuild。

    实际上,在我的情况下(没有 IncrediBuild),只需在 Install.vcxproj 上运行 MSBuild 就足够了,它会检测依赖关系并在安装项目之前构建其他项目。

    【讨论】:

    • 是的,我最终对 incredibuild 做了同样的事情。我想知道为什么 MSBuild 与构建安装项目的 VS UI 不一样。
    猜你喜欢
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    • 2023-01-27
    • 1970-01-01
    相关资源
    最近更新 更多