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



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

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

有两种方法:

  1. 将所有头文件和lib文件放在不同的根文件夹中,该文件夹位于项目的同一级别

  2. 让每个项目都是自关闭的,其他想要使用这个项目的项目应该注意include路径和link路径。当然,我们应该给每个项目的布局一个规则(例如,每个项目必须在根文件夹中有一个"include"文件夹和"lib"文件夹)

有什么建议吗?感谢

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

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

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

所有新项目都只是使用Visual Studio的默认设置添加到解决方案中。试图违背这一点,让项目像Linux项目一样工作(libincludesrc),最终只会让你感到悲伤,所以不要这样做

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

#include "Project1/someheader.h"

这样做的好处是你不会把你的"额外包含"搞得一团糟,所以很容易一眼就能看出外部包含了什么项目。

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

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

我会选择第一个解决方案。它使项目设置变得简单。作为我们工作的C++项目,我们总是把头文件放在一起。

相关内容

  • 没有找到相关文章

最新更新