对于 Visual Studio,我不喜欢您建议的两种方法中的任何一种,尽管我的方法与您的选项 #2 最密切相关。我喜欢的组织方式是这样的:
<SolutionRoot>
<Project1>
project1.vcxproj
someheader.h
somesource.cpp
<Project2>
<Project3>
<Project4>
<Project5>
application.sln
如果这不明显,那是一个准目录列表,显示了一些项目文件夹和基本解决方案文件。
所有新项目都只是使用 Visual Studio 的默认设置添加到解决方案中。试图违背这一点并使项目像 Linux 项目(lib
,include
等)一样工作最终src
只会让你感到悲伤,所以不要这样做。
现在,我将每个项目的“附加包含”路径设置为$(SolutionDir)
. 然后,如果我想包含 Project1 中的内容:
#include "Project1/someheader.h"
这样做的好处是您不会弄乱您的“附加包含”,因此很容易一目了然地看到项目具有哪些外部包含。
至于链接到 lib 文件,为什么不利用 Visual Studio 的项目引用功能。老实说,你的生活会更轻松。只需将其连接起来,以便 Project2 引用 Project1等……然后您不必担心库和链接器路径。您只对解决方案树之外的工具包执行此操作(例如,libpng或openssl等发行版)。
同样,您释放了该设置,因此它仅显示解决方案之外的链接。另一个优点是,如果您使用引用,您的构建顺序是隐式定义的。