我有一个大型项目,分为两部分:
第1部分需要跨平台,我们使用CMake为此设置所有项目文件。
第2部分仅适用于Windows。它在.SLN文件中配置,它取决于第1部分。
我们使用cmake生成Part1.sln,但此时我们有两个不同的解决方案(Part1.sln和Part2.sln),并且不断地从一个切换到另一个很烦人。
显然使用CMake作为第2部分不是一个选项,因为我们的大多数开发人员都无法编辑cmake文件,并希望直接从MSVC修改解决方案。
据我所知,不可能在另一个内部“包含”视觉工作室解决方案,但我可能错了。
我们希望生成一个包含第1部分和第2部分的单个.SLN文件,可能使用CMake本身或其他方法。
答案 0 :(得分:1)
您是对的,您不能在另一个中包含完整的Visual Studio解决方案文件。
但是,您感兴趣的第1部分项目中的大部分信息可能不在解决方案本身中,而是在单个SELECT
department,
SUM(salary) "Money",
CASE
WHEN job_id = 'SA_MAN'
THEN 'Y'
END "Indicator"
FROM
(SELECT
first_name || ' ' || last_name AS "name",
salary,
job_id,
department_id depatment
FROM
employees)
GROUP BY depatment,
CASE
WHEN job_id = 'SA_MAN'
THEN 'Y'
END
ORDER BY 1 ;
项目文件中。这些可以包含在你想要的任意数量的解决方案中。
既然你说在第2部分项目中使用CMake是不可能的,那么你将无法在这里获得完美的解决方案。有人需要在第1部分上运行CMake来生成项目文件。这可以通过第2部分项目中的自定义构建步骤来完成。然后,第2部分解决方案文件将包含对该CMake运行生成的项目的硬编码引用。
如果您在第1部分中更改了项目结构,则必须相应地调整第2部分解决方案。如果第1部分中两个项目的项目间依赖关系发生变化,这将变得特别令人讨厌。此外,如果您在加载解决方案之前忘记在第1部分上运行CMake,您最终会得到一堆.vcxproj
个项目,但这并不是什么大问题。只需运行CMake并在相应项目上执行右键单击 - >重新加载项目。
答案 1 :(得分:1)
我们最终使用include_external_msproject
。最终解决方案包含一个主要的cmake文件,它混合了标准的cmake文件(add_subdirectory
)和vcproj文件。唯一(次要)的缺点是Part2.sln中的项目间依赖关系必须在顶级CMakeLists.txt
内重新实现。