gpt4 book ai didi

c++ - 当有许多项目相互依赖时,Visual C++ 中的文件夹结构

转载 作者:太空宇宙 更新时间:2023-11-04 12:04:22 26 4
gpt4 key购买 nike

假设我有一个包含 10 个项目(名为 proj1 到 proj10)的 sln,proj1 是生成 EXE 文件的默认项目。

我的问题是:如何放置“include”文件夹?我的意思是,如果 proj2 使用 proj3(包括其头文件并链接其 lib 文件),如何放置“include”文件夹?

有两种方法:

  1. 将所有头文件和lib文件放在项目同一层的不同根文件夹中

  2. 让每个项目自动关闭,其他想要使用这个项目的项目应该注意包含路径和链接路径。因为我们应该为每个项目的布局制定规则(例如,每个项目的根文件夹中必须有一个“include”文件夹和“lib”文件夹)

有什么建议吗?谢谢

最佳答案

当谈到 Visual Studio 时,我不喜欢你建议的两种方法中的任何一种,尽管我的方法与你的选项 #2 最相关。我喜欢的组织方式是这样的:

<SolutionRoot>
<Project1>
project1.vcxproj
someheader.h
somesource.cpp
<Project2>
<Project3>
<Project4>
<Project5>
application.sln

如果这不是很明显,那是一个显示一些项目文件夹和基本解决方案文件的准目录列表。

所有新项目都使用 Visual Studio 的默认设置添加到解决方案中。试图与此相反并使项目像 Linux 项目(libincludesrc etc)一样工作只是结束导致你悲伤,所以不要这样做。

现在,我将每个项目的“附加包含”路径设置为 $(SolutionDir)。然后,如果我想包含 Project1 中的内容:

#include "Project1/someheader.h"

这样做的好处是您不会弄乱您的“附加包含”,因此很容易一目了然地看到一个项目有哪些外部包含。

至于链接到 lib 文件,为什么不利用 Visual Studio 的项目引用功能。老实说,你的生活会更轻松。只需将其连接起来,以便 Project2 引用 Project1、等等...然后您就不必担心库和链接器路径。您只能为解决方案树之外的工具包执行此操作(例如 发行版,例如 libpngopenssl)。

再次,您释放该设置,使其仅显示解决方案之外的链接。另一个优点是,如果您使用引用,您的构建顺序是隐式定义的。

关于c++ - 当有许多项目相互依赖时,Visual C++ 中的文件夹结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12850899/

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