gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:51:11 26 4
gpt4 key购买 nike

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

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

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

最佳答案

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

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

我认为我不值得在这里向您介绍设置的机制,因为 Microsoft 已经在 Visual Studio 帮助文件中记录了它。可以说,您在 Property Manager 中执行此操作,应该可以帮助您追踪相关信息。

这里还有一篇很棒的博文,我建议您在做任何其他事情之前先阅读一下:

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

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

那么,谁还认为微软不知道如何创建构建系统呢? Visual Studio 是一款很棒的软件,一旦您习惯了它,就需要一点点学习曲线。

关于c++ - 如何使 Visual Studio 2017 C++ 项目在计算机之间更具可移植性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51317675/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com