【问题标题】:folder structure in Visual C++ when there are many projects depending on each other当有许多项目相互依赖时,Visual C++ 中的文件夹结构
【发布时间】:2012-10-12 01:12:25
【问题描述】:

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

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

有两种方法:

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

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

有什么建议吗? 谢谢

【问题讨论】:

    标签: c++ visual-studio include-path directory-structure


    【解决方案1】:

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

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

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

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

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

    #include "Project1/someheader.h"
    

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2021-08-25
        • 2011-10-18
        • 1970-01-01
        • 2018-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-11
        • 2017-10-02
        相关资源
        最近更新 更多