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

How to make Visual Studio 2017 C++ project more portable between computers?

本文关键字:之间 计算机 可移植性 项目 Visual 何使 Studio 2017 C++      更新时间:2023-10-16

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

但当我把这个项目交给主管时,他必须重新设置到库的所有路径,以匹配他的环境。我们使用git,并且正在跟踪项目文件。他用另一种方式储存第三方图书馆,而不是我

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

正如@gaurav所说,在Visual Studio中处理此问题的方法是使用属性表。不幸的是,这个词在VS中用于两种不同的东西,但我想它们只是没有名字了(剧透提醒(。

一旦你了解了它们的工作原理,它们就会非常强大,而它们正是你在这里所需要的,因为它们可以让你定义,而这些宏反过来可以在你的项目的其余部分中使用,以引用你的各种库的(易失性(位置。这是一个每个使用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-工作室宏/

好的,现在我们知道如何定义宏了,我们能用它做什么?

其实这才是最简单的部分。如果我们有一个名为FOO的宏,那么无论我们想在某个项目设置或其他设置中扩展该宏,我们都可以使用$(FOO)。IDE中还内置了一堆宏,如下所示:

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

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

我认为,这应该会让你明白,因为宏的定义本身存储在一个单独的文件中,在项目文件外部,不同的用户/构建机器可以使用不同的文件。IIRC,它们具有扩展.props

此外,您还可以用另一个或多个宏来定义宏,这会使工作更容易。

那么,谁还会认为微软不知道如何创建一个构建系统呢?Visual Studio是一款出色的软件,一旦你习惯了它,就会有一点学习曲线。

大型项目的方法是使用包管理器。有一些不错的选择。也许在windows和visualstudio中,您可以使用vcpkg或NuGet进行非托管。

如果由于某种原因无法使用包管理器,那么接下来要做的就是将所有依赖项提交给GIT回购。如果你只针对像windows 8或10这样的windows平台,并且只想支持VS2017,那么提交编译后的依赖项不是问题。不利的一面是回购将变得巨大。

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