依赖项作为git子模块,没有配置cmake项目
我有一个以cmake为构建系统的项目。我希望将项目的依赖项作为git子模块提取,并将其构建过程集成到整个项目的一个cmake构建过程中依赖项作为git子模块,没有配置cmake项目,cmake,git-submodules,organization,project-organization,external-project,Cmake,Git Submodules,Organization,Project Organization,External Project,我有一个以cmake为构建系统的项目。我希望将项目的依赖项作为git子模块提取,并将其构建过程集成到整个项目的一个cmake构建过程中 如果依赖项也使用cmake作为其构建系统,那么使用ExternalProject\u Add非常简单。我已经能够集成这种依赖关系(SDL) 但是,如果我的依赖项不使用cmake,我该怎么办?在我的例子中,这些将是lua和bgfx。考虑到这种情况,有哪些可能的方法来组织一切?我是否应该为此类项目编写并维护CMakeLists.txt文件,为每个此类依赖项使用一些丑
如果依赖项也使用cmake作为其构建系统,那么使用
ExternalProject\u Add
非常简单。我已经能够集成这种依赖关系(SDL)
但是,如果我的依赖项不使用cmake,我该怎么办?在我的例子中,这些将是lua和bgfx。考虑到这种情况,有哪些可能的方法来组织一切?我是否应该为此类项目编写并维护CMakeLists.txt文件,为每个此类依赖项使用一些丑陋的源代码引用,如
。/../bgfx/src/main.cpp
,并为每个此类CMakeLists.txt文件创建一个文件夹,以使用ExternalProject\u Add
引用此文件夹?或者还有其他一些方法?ExternalProject\u Add
允许为配置(configure\u COMMAND
)、生成(build\u COMMAND
)和安装(install\u COMMAND
)步骤指定自定义命令。您是否尝试使用此功能?@Tsyvarev您的意思是在这些外部项目上执行除cmake之外的构建系统?是的,我认为这是一种可能性,但我认为这可能需要我为每个操作系统编写ExternalProject\u Add
,因为我想在windows和GNU/Linux上构建项目。CMake不是一个神奇的工具,它可以从包的自述中提取构建选项:)因为lua需要不同的windows和Linux构建选项,您应该检查操作系统并提供相应的构建命令。事实上,几乎每一个将3d party跨平台软件与cmake集成的cmake模块都会检查操作系统。。。你解决了这个问题吗?我现在面临着同样的问题,希望有某种通用的cmake解决方案,将git子模块合并到使用autotools构建的cmake构建中。此类函数/宏需要的信息包括:子目录的名称、要使用的获取url和分支、在第一次克隆(autogen.sh)后运行的命令以及配置参数。可能还需要设置构建命令(make)和/或环境变量;一切都应该有可以覆盖的默认值。@CarloWood iirc我为第三方项目编写了一些外部CMakeLists.txt文件。你可以看一下,这里是子模块,所有的cmake文件都在这里。那时候还管用。不确定它是否仍然有效。