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

时间:2014-03-20 09:04:14

标签: c# python c++ build cmake

我有一个更大的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解决方案只是调用一些脚本命令将其转换为可执行文件。不需要在这里直接使用解决方案,这也可以通过调用外部批处理脚本或类似的东西来完成。

2 个答案:

答案 0 :(得分:2)

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

我使用include_external_msproject

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 )

在我的主 /CMakeLists.txt

ADD_SUBDIRECTORY( "MyProj/" )

我不知道你是否可以将它用于python项目......

答案 1 :(得分:0)

除了皮埃尔的答案,其中涵盖了C#方面:

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

在Linux上,我只是使用shell脚本。