Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
依赖项作为git子模块,没有配置cmake项目_Cmake_Git Submodules_Organization_Project Organization_External Project - Fatal编程技术网

依赖项作为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为构建系统的项目。我希望将项目的依赖项作为git子模块提取,并将其构建过程集成到整个项目的一个cmake构建过程中


如果依赖项也使用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文件都在这里。那时候还管用。不确定它是否仍然有效。