将非C++子项目集成到CMake项目中
我有一个比较大的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
我想把这些非C++的子项目直接整合进CMake环境,但找不到最好的方法。
有没有办法把非C++的子项目整合到CMake项目里?对于这种情况,有没有什么好的做法?
注意: Python的解决方案只是调用一些脚本命令把它转换成可执行文件。在这里不需要直接使用解决方案,也可以通过调用外部批处理脚本之类的方式来完成。
2 个回答
0
除了Pierre提到的C#部分,我现在正在通过 execute_process 来构建Python组件。我创建了一个批处理文件,用来执行所需的步骤。如果需要更多的自定义,我可以使用 configure_file,在脚本里加入一些CMake的魔法。
在Linux上,我会简单地使用一个shell脚本。
3
我在我的一个项目中也做了类似的事情。我有一个很大的解决方案,里面有很多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项目……