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项目结构、外部库和包_Git_Cmake_Libraries_Project Structure - Fatal编程技术网

Git和CMake项目结构、外部库和包

Git和CMake项目结构、外部库和包,git,cmake,libraries,project-structure,Git,Cmake,Libraries,Project Structure,我对CMake项目和Git都缺乏经验 如果我使用外部库,例如JsonCpp和OpenVR,将包/库放在我的项目结构中,并将它们与我自己的东西一起推送到我的Git存储库,这是一种糟糕的方法吗 我之所以这样做,是因为我想让未来的用户更容易使用,这样他们就不必下载这些库并将安装目录添加到CMAKE_PREFIX_路径中 谢谢你的帮助 将包/库放在我的项目结构中,并将它们与我自己的东西一起推送到我的Git存储库,这是一种糟糕的方法吗 是的 我之所以这样做,是因为我想让未来的用户更容易使用,这样他们就不必

我对CMake项目和Git都缺乏经验

如果我使用外部库,例如JsonCpp和OpenVR,将包/库放在我的项目结构中,并将它们与我自己的东西一起推送到我的Git存储库,这是一种糟糕的方法吗

我之所以这样做,是因为我想让未来的用户更容易使用,这样他们就不必下载这些库并将安装目录添加到CMAKE_PREFIX_路径中

谢谢你的帮助

将包/库放在我的项目结构中,并将它们与我自己的东西一起推送到我的Git存储库,这是一种糟糕的方法吗

是的

我之所以这样做,是因为我想让未来的用户更容易使用,这样他们就不必下载这些库并将安装目录添加到CMAKE_PREFIX_路径中

只有当您确信用户将在相同的OS/arch上运行它们时,才能这样做。如果这些库使用其他一些系统库,您还必须确保这些库存在于用户系统上,并且具有兼容的版本


这在一般情况下是非常脆弱的,通常的做法是单独分发依赖项,并在配置阶段搜索它们。

您需要一些依赖项管理器。对于C++是相当不错的。或者你可以使用

cmake也有一些解决方案

我从来没有配置过这些,但我一直在使用Conan和Maven,其他人设置了一切


还有其他工具,您只需选择一个。

我甚至认为,无论您使用什么构建系统/生成器,将依赖项与项目捆绑在一起都是一种糟糕的做法。然后你必须解决你的依赖关系,这是一个你不想打开的蠕虫罐头

特别是CMake,它通过命令具有非常强大的依赖关系管理系统,以及通过和的强大接口

在配置过程中,如果未找到所需的依赖项,CMake将打印一条消息,明确缺少哪个库,然后由用户自行安装并解决

当涉及到在链接时查找这些依赖项时,您再次不用担心您的用户,因为CMake为您管理所有这些

我建议大家先看一看CMake,了解一下CMake,然后做一些关于使用的研究,如果您使用的Find模块既不提供Find模块,也不提供pkg配置文件,那么如何编写您自己的Find模块