Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.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
C++ C++;具有第三方依赖关系的开发流程_C++_Visual Studio_Qt_Boost_Cmake - Fatal编程技术网

C++ C++;具有第三方依赖关系的开发流程

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++。我一

我是一名Python开发人员,具有Ruby等其他语言的一些背景。 在这两种语言中,依赖关系都由包管理器自动管理,例如
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