繁体   English   中英

在CMake中包含Visual Studio解决方案

[英]Include Visual Studio solution in CMake

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

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

  • 第2部分仅适用于Windows。 它在.SLN文件中配置,并且取决于第1部分。

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

显然,对于第2部分,请不要使用CMake,因为大多数开发人员无法编辑cmake文件,并且希望直接从MSVC修改解决方案。

据我所知,不可能在另一个解决方案中“包含” Visual Studio解决方案,但是我对此可能是错误的。

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

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

但是,您感兴趣的第1部分项目中的大多数信息可能都不在解决方案本身中,而是在单独的.vcxproj项目文件中。 这些可以包含在您想要的许多解决方案中。

由于您说在第2部分项目上使用CMake是不可能的,因此您在这里将无法获得理想的解决方案。 有人需要在第1部分上运行CMake才能生成项目文件。 不过,这可以通过第2部分项目中的自定义构建步骤来完成。 然后,第2部分解决方案文件将包含对该CMake运行生成的项目的硬编码引用。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM