C++ C++;具有第三方依赖关系的开发流程
我是一名Python开发人员,具有Ruby等其他语言的一些背景。 在这两种语言中,依赖关系都由包管理器自动管理,例如C++ C++;具有第三方依赖关系的开发流程,c++,visual-studio,qt,boost,cmake,C++,Visual Studio,Qt,Boost,Cmake,我是一名Python开发人员,具有Ruby等其他语言的一些背景。 在这两种语言中,依赖关系都由包管理器自动管理,例如pip或gem。任何人都可以通过调用pip install-r requirements.txt安装这种依赖关系,它将通过安装安装必要的依赖关系。尽管有一个选项可以从源代码手动构建依赖项并安装到项目中,但这不是一个推荐的过程,我也没有这样做 < >我注意到C++在如何解决依赖性方面有不同的性质(例如不同的编译器味道、编译器参数、平台等) 目前,我正在使用VS2015学习C++。我一
pip
或gem
。任何人都可以通过调用pip install-r requirements.txt安装这种依赖关系,它将通过安装安装必要的依赖关系。尽管有一个选项可以从源代码手动构建依赖项并安装到项目中,但这不是一个推荐的过程,我也没有这样做
< >我注意到C++在如何解决依赖性方面有不同的性质(例如不同的编译器味道、编译器参数、平台等)
目前,我正在使用VS2015学习C++。我一次又一次地被这些库依赖性问题绊倒。对于VS2015,有一个类似python的依赖项包管理器,它是NuGet。然而,并非所有库都可以在NuGet中使用,事实上,有许多库是独立于其IDE开发的
首先,我尝试使用Boost。有一本关于如何构建项目的手册,但我不确定我需要什么。我需要从源代码构建吗?或者我只是需要一个现成的图书馆
和我找到的另一个图书馆的原因一样。(例如QT、yaml cpp、googletest等)他们只有一个如何构建的文档,而不是如何作为依赖项安装的文档
最终,我需要使用大量的第三方库来提高效率。所以,这里是我的一些非常相关的问题
C++开发人员通常如何将第三方库包含到他们的项目中(安装第三方库的流程)?
每次我想包含的时候,我都必须从源代码构建吗?或者,您可能只需要头文件,您可以将其复制并粘贴到项目目录中
我在团队(git)中工作,我的每个团队是否都需要手动构建依赖关系?它是否可以实现自动化,使包含新库的过程对每个人都是透明的
或者,我真的不明白我需要什么样的问题
问。但是为什么在C++中重用库?
我错过了C++环境的一些基本理解吗?
我不确定它的相关性有多大,但CMake是大多数库用于构建项目的构建工具。我真的需要构建这些库项目吗
更多问题:
在构建一些库之后,其中一些库生成要包含到项目中的静态库.lib
或动态库.dll
。那么,在我们的项目中复制这些生成的库是否正确?是否应将其提交到源代码版本控制中?有些库非常大,我们不想维护它。然而,我们需要整个团队以透明的方式获取库
如何将C++开发人员正常地包含第三方库
项目(第三方库的安装流程)
这取决于。。。有很多方法,如何重新分配C++库。
每次我想包含的时候,我都必须从源代码构建吗?或许
您只需要头文件,您可以复制并粘贴到其中
你的项目目录
<>现在,大多数C++库包含两个部分:二进制文件+头文件。但是,如果库的编译器版本与您的编译器不同,通常会出现很多问题
我在团队中工作,我的每个团队都需要建立依赖关系吗
手动?它是否可以实现自动化,以便包括新的
图书馆对每个人都是透明的
这取决于你的团队指导方针。你可以选择你想要的
或者,我真的不明白我需要什么样的问题
问。但是为什么在C++中重用库?
由于C的一些遗留问题,因为C++与Python/爪哇/C语言相比是低级语言。C++由许多不同的平台支持,包括嵌入式。而且,通常不可能在这个平台上安装复杂的运行时。因此,在运行时没有透明链接“模块”的机制
希望C++17标准中会有对模块的正常支持。微软将在MSVC 2015更新1中提供C++中的模块技术预览。
我错过了C++环境的一些基本理解吗?
是的,我建议您阅读C/C++中的编译和链接。这两件事经常结合在一起,但它们是不同的
首先,您应该注意:C/C++中的代码分为两部分:声明(.h文件)和实现(.cpp文件)。CPP文件被编译成二进制文件。H文件只是声明了一个接口。我非常了解您的情况。你看不到森林,因为太多的树木挡住了你的路
在我开始回答您的具体问题之前,让我先弄清楚一件事:
一般来说,C++中的依赖项是<>强>不>强>比Python更复杂。
命令pip install-r requirements.txt
将建立internet连接,并从存储库服务器下载必要的库和文件以满足要求。在Linux操作系统(Ubuntu)下,命令:sudo apt get install libboost all dev
安装boost所需的所有依赖项。这是可能的,因为有一个完整的环境,其中有保存源代码的服务器,以及与使用它的客户端程序(apt get
)一起工作的库和二进制文件。这与pip
的作者为microsoft windows所做的工作完全相同。微软自己从来没有在操作系统级别这样做过。他们总是把这个留给程序员Nu