如何使Visual Studio 2017 C ++项目在计算机之间具有更高的可移植性?

时间:2018-07-13 04:30:49

标签: c++ visual-studio projects-and-solutions

我正在开发一个基于C ++的项目,该项目依赖于许多第三方库(* .lib文件和* .h文件)。我将这些库存储在一个不依赖于项目的文件夹中,例如C:/ thirdpartylib。相对路径不是一个选择,因为它变得太长了。我已经在链接器设置和常规C ++设置中定义了到库的连接。

但是,当我将项目传递给主管时,他必须重置所有库的路径以匹配其环境。我们使用git,并且正在跟踪项目文件。他以不同于我的方式存储第三方库。

有什么方法可以使项目更具可移植性?也许可以将路径存储在某种配置文件中?

2 个答案:

答案 0 :(得分:2)

进行大型项目的方法是使用程序包管理器。有一些不错的选择。也许在Windows和Visual Studio中,您可以使用vcpkg或不受管理的NuGet。

如果由于某种原因不能使用包管理器,那么下一步是将所有依赖项提交到GIT存储库。如果您仅针对Windows 8或10之类的Windows平台,并且只想支持VS2017,则提交已编译的依赖项不是问题。不利之处在于回购将变得庞大。

对于一个很小的学校项目,后一种选择是可行的。

答案 1 :(得分:2)

正如@gaurav所说,在Visual Studio中处理此问题的方法是使用属性表。不幸的是,该术语在VS中用于两个不同的事物,但我想它们只是ran out of names(扰流警报)。

这些功能非常强大,一旦您了解了它们的工作原理,它们正是您所需要的,因为它们使您可以定义,而这些宏又可以在其余的宏中使用您的项目要引用各个库的(易失)位置。这是使用VS的每个人都应该知道的技巧,但似乎很多人都不知道。

我认为不值得尝试引导您在此处进行设置的机制,因为Microsoft已经在Visual Studio帮助文件中对其进行了说明。可以说,您可以在属性管理器中进行操作,这应该有助于您跟踪相关信息。

这里还有一篇很棒的博客文章,建议您在进行任何其他操作之前先阅读一下

http://www.dorodnic.com/blog/2014/03/20/visual-studio-macros/

它也在Wayback Machine上

https://web.archive.org/web/20171203113027/http://www.dorodnic.com/blog/2014/03/20/visual-studio-macros/

好的,所以现在我们知道如何定义宏了,我们该怎么办?

好吧,这实际上是简单的部分。如果我们有一个名为FOO的宏,那么无论我们想在某个项目设置中扩展该宏的位置,还是仅在$(FOO)中使用,我们都可以使用。 IDE中还内置了许多宏,如下所示:

https://msdn.microsoft.com/en-us/library/c02as0cs.aspx

因此,我想您将要为每个外部库的includelib目录定义宏,然后可以使用它们替换您所使用的硬编码路径当前在您的项目中使用。

我认为应该对您进行分类,因为宏本身的定义存储在项目文件外部的单独文件中,并且不同的用户/构建机器可以使用不同的文件文件。 IIRC,这些扩展名为.props

此外,您可以使用另一个或多个宏来定义一个宏,这使工作更加轻松。

那么,还有谁仍然认为Microsoft不知道如何创建构建系统?一旦您习惯了Visual Studio,它就会是一个很棒的软件,学习的过程会有些许困难。