在 CMake 中包含 Visual Studio 解决方案

Include Visual Studio solution in CMake

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

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

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

据我所知,不可能 "include" 一个 visual studio 解决方案在另一个解决方案中,但我可能错了。

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

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

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

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

生成的项目的硬编码引用

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

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

中重新实现