【问题标题】:Integrate non-C++ subprojects into CMake project将非 C++ 子项目集成到 CMake 项目中
【发布时间】:2014-03-20 09:04:14
【问题描述】:

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

目前我们首先构建 CMake 材料,然后是解决方案。然后,我们将创建的二进制文件复制到 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# python c++ build cmake


    【解决方案1】:

    我在我的一个项目中做了同样的事情。我有一个包含许多 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 项目中使用它...

    【讨论】:

    • 非常感谢!我还发现了这个问题:stackoverflow.com/questions/2074144/…,它帮助我构建了 C# 项目
    • 您正在链接到 include_external_msproject 的旧文档,您正在使用的版本在这里:cmake.org/cmake/help/v2.8.10/…
    • @MONsDaR 是的,抱歉我修改了链接,谢谢。在我的CMakeLists.txt 中,不仅仅是那些行:) 我还修改了.csproj 以符合我的要求。如果您需要更多,请告诉我 ;)
    • 我想我得到了我需要的指针。在接受答案之前,我只是在等待有关 Python 部分的一些信息。
    【解决方案2】:

    除了来自 C# 方面的 Pierre 的回答:

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

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

    【讨论】:

      猜你喜欢
      • 2012-06-29
      • 2019-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-14
      • 1970-01-01
      相关资源
      最近更新 更多