关闭。这个问题需要更多focused .它目前不接受答案。
想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .
6年前关闭。
Improve this question
我是一名 Python 开发人员,具有另一种语言(如 Ruby)的一些背景。
在这两种语言中,依赖项都由包管理器自动管理,例如 pip
或 gem
.任何人都可以安装 通过调用 pip install -r requirements.txt
这种依赖关系,它将通过 Python Package Index 安装必要的依赖项.虽然,有一个选项可以从源代码手动构建依赖项并将其安装到项目中,但这不是推荐的过程,我还没有这样做。
我注意到,不幸的是,C++ 在解决 some reason. 的依赖性方面具有不同的性质。 (例如不同的编译器风格、编译器参数、平台等...)
目前,我正在使用 VS2015 学习 C++。我一次又一次地发现这些库依赖关系很重要。 VS2015有python这样的依赖包管理器,就是 NuGet .但是,并不是每个库都在 NuGet 中可用,事实上,有很多库是独立于其 IDE 开发的。
首先,我正在尝试使用 Boost。有一个关于如何构建项目的手册,但我不确定我需要什么。我需要从源代码构建吗?或者也许我只需要一个随时可用的图书馆?
我发现的另一个图书馆的原因相同。 (例如 QT、yaml-cpp、googletest 等。)他们只有一个文档如何构建,而不是如何安装为依赖项。
最终,我将需要使用大量的 3rd 方库来 boost 工作效率。所以,这是我的一些非常相关的问题。
Or perhaps, I don't really understand what specific question do I need to ask. But why it is so painful to reuse library in C++?
我是否错过了对 C++ 环境的一些基本理解?
我不确定它的相关性有多大,但 CMake 作为大多数库用来构建项目的构建工具。我真的需要构建这些库项目吗?
更多问题:
.lib
或动态库.dll
被纳入项目。那么在我们的项目中复制这些生成的库是否正确呢?这应该提交到源版本控制中吗?有些库非常大,我们不想维护它。然而,我们需要整个团队透明地获取库。 最佳答案
我很了解你的情况。你看不到森林,因为太多的树挡住了你的路......
在我开始解决您的具体问题之前,让我弄清楚一件事:
Generally speaking, dependencies in C++ are not more complicated than in Python.
命令
pip install -r requirements.txt
将建立 Internet 连接并从存储库服务器下载必要的库和文件以满足要求。在 Linux 操作系统(Ubuntu)下命令:sudo apt-get install libboost-all-dev
安装 boost 所需的所有依赖项。这是可能的,因为有一个完整的环境,其中包含保存源代码的服务器以及与使用它的客户端程序( apt-get
)一起工作的库和二进制文件。这与pip
的作者完全一样。为微软windows做过。微软自己从来没有在操作系统层面这样做过。他们总是离开那个给程序员 . NuGet 是微软试图弥补过去的错误。有了这个,让我来解决你的问题:
Project > "projectname" properties > Configuration Properties > C/C++ > General > Additional Include Directories
Project > "projectname" properties > Configuration Properties > Linker > Input > Additional Dependencies.
但更重要的是体面的source-control-management系统。如果您还没有使用一个 - 开始使用一个 今天! .这是主要的协作工具。如果您丢失了开发机器,它真的可以节省您的脖子。
还有一个依赖问题:我们只解决了上面的开发依赖项。存在的问题部署依赖项:
Qt:如果你开始使用 Qt,我建议你开始使用他们的开发环境 Qt-Creator .这将自动处理所有依赖项。它将自动检测您已安装的 Visual Studio 编译器并使用它。 IDE 非常接近 Visual Studio。
CMake:不,并不总是需要使用 CMake 来构建库项目,有些还包括 Makefile。其他人使用 CMake 来生成 Makefile。 “按照说明操作”是我在这里给出的最好建议。
2015-10-24 更新:第三段重做
关于具有 3rd 方依赖性的 C++ 开发流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32934134/