将非c++子项目集成到CMake项目中

本文关键字:CMake 项目 集成 c++ 子项目 将非 | 更新日期: 2023-09-27 17:51:12

我有一个更大的CMake项目有很多子项目。几乎所有的子项目都是用c++编写的,所以通过add_subdirectory简单地集成它们是没有问题的。然而,项目的某些部分是用c#和Python编写的。它们目前都使用Visual Studio Solutions来构建它们。

目前我们先构建CMake-stuff,然后再构建解决方案。然后将创建的二进制文件复制到CMake安装目录中各自的目录中。如果我们可以用CMake来构建所有的东西,那就更实用了。

MyProject
|
|--> CMakeLists.txt (includes all subprojects)
|
|--> SubA (C++)
|-----> CMakeLists.txt
|
|--> SubB (C++)
|-----> CMakeLists.txt
|
|--> SubC (C#)
|-----> SubC.sln
|
|--> SubD (Python)
|-----> SubD.sln

我想把它们直接集成到CMake环境中,但找不到最好的方法。

是否有办法将非c++子项目集成到CMake项目中?对于这种情况有什么最佳实践吗?

注意:Python解决方案只是调用一些脚本命令将其转换为可执行文件。不需要在这里直接使用解决方案,这也可以通过调用外部批处理脚本或类似的东西来完成。

将非c++子项目集成到CMake项目中

我在我的一个项目中做了同样的事情。我有一个很大的解决方案,有许多c++项目和两个c#项目。

我用的是include_external_msproject

在<<p> em> MyProj/CMakeLists.txt :
cmake_minimum_required (VERSION 2.6)
project (MyProj)
include_external_msproject( my_proj path_to_myproj/myproj.csproj
TYPE FAE04EC0-301F-11D3-BF4B-00C04F79EFBC )
在my main /CMakeLists.txt:
ADD_SUBDIRECTORY( "MyProj/" )

我不知道你是否可以使用相同的python项目…

Pierre的回答涵盖了c#方面:

我现在通过execute_process构建Python组件。我创建了一个执行所需步骤的批处理文件。对于更多的定制,我可以使用configure_file并在脚本中添加一些CMake魔法。

在Linux上我将简单地使用shell脚本