Visual Studio"同步"一个解决方案中的多个项目

时间:2017-04-07 18:48:12

标签: c++ visual-studio version-control projects-and-solutions


我在visual studio中编写自己的C ++项目库(一些项目由* cpp,* .h文件组成,而不是实际的.lib文件)。这些项目中的每一个都位于单个Visual Studio"解决方案中。

当我需要使用另一个项目中的代码时,我只是复制了它。但这是短期解决方案。现在我的库在大小和功能方面都有所增长,而且由于代码重复,我最终得到了同一文件的几十个不同版本。

这个单一的解决方案让我成为一个操场//新思路的试验场。我正在开发项目而不是libs。目前它拥有约50个项目。

我正在开发visual studio 2015.

让我说我的设置是这样的:

    位于*/Solution/#DataInputAndOutput/DataIO/DataIO.h
  1. DataIO 项目 包括DataIO.h和DataIO.cpp
  2. 位于*/Solution/#Foo/Foo/Foo.h
  3. Foo 项目 包括Foo.h和Foo.cpp
  4. DataIO.h:

    #pragma once
    #ifndef __DATA_IO_H__
    #define __DATA_IO_H__
    // ...
    
    extern FILE * const logFile;
    
    // Bunch of function declarations
    #endif // !__DATA_IO_H__
    

    我知道这不是一个"最小,完整,可验证的例子"但我的问题在于物流的逻辑,而不是事物本身。而且我相信我的描述已经足够了。

    问题#1:Foo.cpp#include "DataIO.h"(可能是因为我在Foo项目设置中添加了额外的包含目录)但每当我尝试编译Foo我给出了以下错误:unresolved external symbol,用于DataIO.h内的每个函数声明和一个外部变量。 如何解决此问题?我是否需要创建DataIO.lib才能保持正确?

    我尝试将DataIO.hDataIO.cpp直接添加到Foo项目中(不要复制它,只需将其添加到项目中)但这似乎是一个坏主意......

2 个答案:

答案 0 :(得分:1)

执行此操作的最佳方法是将公共代码分解到库中,以便公共代码驻留在一个位置。然后让您的项目使用库 - 通过包含文件并链接到所述库。

答案 1 :(得分:1)

我建议在VS2015 +中尝试新的“共享项目项目”。共享项目项目实际上只是一组文件。该项目本身并没有构建任何东西。实际上,共享项目项目中没有(或几乎没有)编译或链接设置 - 这些设置来自引用共享项目项目的项目。当您从其他项目FOO引用共享项目项目时,FOO的构建就像共享项目项目的文件是引用项目的项目一样。

除此之外,您可以设置共享项目以构建.libs,然后在Visual Studio中使用Project References自动设置链接。不过,我认为你必须手动设置包含路径。