【问题标题】:Include Visual Studio solution in CMake在 CMake 中包含 Visual Studio 解决方案
【发布时间】:2016-05-15 06:41:01
【问题描述】:

我有一个大型项目,分为两部分:

  • 第 1 部分需要跨平台,我们使用 CMake 设置所有项目文件。

  • 第 2 部分仅适用于 Windows。它是在 .SLN 文件中配置的,它依赖于第 1 部分。

我们使用 cmake 生成一个 Part1.sln,但是此时我们有两种不同的解决方案(Part1.sln 和 Part2.sln),而且不断地从一个切换到另一个很烦人。

显然在第 2 部分中使用 CMake 不是一个选项,因为我们的大多数开发人员无法编辑 cmake 文件并希望直接从 MSVC 修改解决方案。

据我所知,不可能将 Visual Studio 解决方案“包含”到另一个解决方案中,但我可能错了。

我们想生成一个包含第 1 部分和第 2 部分的单个 .SLN 文件,可能使用 CMake 本身或其他方法。

【问题讨论】:

    标签: c++ visual-studio visual-studio-2008 cmake


    【解决方案1】:

    我们最终使用了include_external_msproject。最终解决方案包括一个混合标准 cmake 文件 (add_subdirectory) 和 vcproj 文件的主 cmake 文件。唯一(次要)的缺点是 Part2.sln 中的项目间依赖关系必须在顶层 CMakeLists.txt 内重新实现。

    【讨论】:

      【解决方案2】:

      您是对的,您不能在另一个文件中包含完整的 Visual Studio 解决方案文件。

      但是,您感兴趣的第 1 部分项目中的大部分信息可能不在解决方案本身中,而是在各个 .vcxproj 项目文件中。这些可以包含在任意数量的解决方案中。

      既然您说在第 2 部分项目中使用 CMake 是不可能的,那么您在这里不会得到完美的解决方案。有人需要在第 1 部分运行 CMake 以生成项目文件。不过,这可以通过第 2 部分项目中的自定义构建步骤来完成。然后,第 2 部分解决方案文件将包含对该 CMake 运行生成的项目的硬编码引用。

      如果您在第 1 部分中更改项目结构,则必须相应地调整第 2 部分的解决方案。如果第 1 部分中两个项目的项目间依赖关系发生变化,这将变得特别令人讨厌。此外,如果您在加载解决方案之前忘记在第 1 部分运行 CMake,您最终会得到一堆 load failed 项目,但这没什么大不了的。只需运行 CMake 并在相应项目上执行右键单击->重新加载项目。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多