2016-02-05 77 views
1

Visual Studio解决方案我有一个分成两个部分大型项目:包括在CMake的

  • 第1个部分必须是跨平台的,我们使用CMake的设置所有的项目文件。

  • 第2部分仅适用于windows。它被配置在.sln文件,它依赖于第1部分

我们使用cmake生成Part1.sln,但在这一点上,我们有两个不同的解决方案(Part1.sln和Part2.sln) ,并且不断从一个切换到另一个是令人讨厌的。

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

据我所知,不可能在另一个视频工作室解决方案中“包含”一个视觉工作室解决方案,但我可能是错误的。

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

回答

1

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

但是,您感兴趣的第1部分项目的大部分信息可能不在解决方案本身中,而是在个人项目文件.vcxproj中。这些可以通过尽可能多的解决方案包括在内。

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

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

1

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