gpt4 book ai didi

c++ - 添加 additional-include-directory 和 reference => 指向一个设置中的静态库

转载 作者:行者123 更新时间:2023-11-30 03:33:16 24 4
gpt4 key购买 nike

我有一个应用程序项目 (MyGame),它希望在同一个解决方案中访问静态库 (MyLib) 中的所有内容:-

MyVisualSolution
- MyLib (static library) : 200 .h & .cpp
- MyGame (win32 app) : 100 .h & .cpp

实现上述要求的步骤是:-

  1. 设置MyGame项目属性> 在MyLib 中添加附加包含目录 = .h 文件夹
  2. 在解决方案资源管理器中,单击MyGameReferences,然后单击复选框MyLib

我必须执行这两个步骤,并且设置在非常不同的地方。
我认为它乏味、肮脏、不直观且容易出错。

有什么方法可以在 Visual Studio 中的一个地方完成吗?
我希望只做一件类似于第二步的事情。

(感觉property sheet可能是最接近的答案,但还是解决不了。)

据我搜索,没有。 (visual c++: #include files from other projects in the same solution)

最佳答案

这可能不是一个完整的答案,但对于评论来说太长了:我们有多个项目,每个项目都有多个静态和动态库项目以及多个应用程序。为了最大限度地减少配置,我们决定采用清晰的项目结构、一些约定,以及所有执行上述结构和约定的项目的通用属性表。设置它花了一些时间,但最终还是值得的。

项目结构(简化)是:

maindir \
_bin \
_lib \
build \
paths.props
linker.props
compiler.props
default.props
maindir.user.props
autolink_template.h
projectA \
projectA.h
autolink.h
projectB \
tests \
projectB \
projectB.h
autolink.h

_bin 是所有 dll/exe 所在的位置。我们可能会根据平台/配置组合使用子目录,或者在输出名称上使用后缀,例如用于 Debug|Win32 构建的 projectA_x86d.exe。这都是在属性表中设置的(我们的项目基本上从不对设置进行任何修改,它们只包含源/包含文件并从构建目录导入属性表)

_lib 是导入库和静态库所在的位置。同样,在名称上使用子目录或后缀。

build 具有所有公共(public)属性表。一个普通的项目只包含 default.props,它会自动判断一个 exe/lib/dll 是否基于 $(ConfigurationType) 构建,并根据它包含其他属性表。有用于将输出路径设置为 _lib 和 _bin 的属性表,搜索路径以便链接器找到 _lib 目录,添加 maindir 以包含搜索路径,甚至诸如基于 git hash 等设置文件版本之类的东西,...如果一个 .user .props 发现它也被导入,这允许与 maindir 相关的自定义设置。

对于包含文件,我们总是使用#include 而不是 . Imo 这更清楚并且减少了名称冲突的机会。如果项目有单独的测试/源目录,如 projectB,调整 maindir.user.props 以将 maindir/projectB 添加到包含路径,因此我们仍然可以使用 #include

为了设置链接,每个 lib 项目中都有一个 autolink.h,它有一个 #pragma comment(lib, "projectA.lib")(从构建目录中的模板创建),因此要链接到该 lib 另一个项目必须 #include 。

现在这对你来说可能有点过分了,但你可能会得到一些适合你的特定情况的想法。

关于c++ - 添加 additional-include-directory 和 reference => 指向一个设置中的静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43086433/

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