C++ C++;依赖于一个库的多个库

C++ C++;依赖于一个库的多个库,c++,cross-platform,libraries,C++,Cross Platform,Libraries,我编写了一个库,它为我提供了基本的调试功能,可以在编译时剥离这些功能。我几乎在我所有的项目中都使用了这个库,但是,我遇到了这样一种情况:我在一个项目中创建了3个库,它们都依赖于同一个库。因此,在他们自己的子目录中,他们都独立地为这个调试库构建代码,这不是最优的。我想知道如何以跨平台的方式来缓解这个问题 项目布局: proj \__ src | \__ foo_lib | \__ src | \__ debug_lib | \__ bar_lib

我编写了一个库,它为我提供了基本的调试功能,可以在编译时剥离这些功能。我几乎在我所有的项目中都使用了这个库,但是,我遇到了这样一种情况:我在一个项目中创建了3个库,它们都依赖于同一个库。因此,在他们自己的子目录中,他们都独立地为这个调试库构建代码,这不是最优的。我想知道如何以跨平台的方式来缓解这个问题

项目布局:

proj
  \__ src
  |
  \__ foo_lib
  |      \__ src
  |      \__ debug_lib
  |
  \__ bar_lib
         \__ src
         \__ debug_lib
如果这是一个git存储库,也就是说,我将有2个子依赖项,其中调试库作为子依赖项。因此,除了编译这两个文件外,每当克隆存储库时,我还必须下载这两个文件

我的朋友告诉我要安装一个全局库,但我只能在我的Linux机器上,而不是在Windows上完成

编辑:评论附录


我希望在使用它进行开发时能够通过项目的源代码(即断点和源代码导航)进行调试,并且不希望预编译二进制文件以随git repos一起提供

  • 这是一个静态库吗
  • 只编译它4次(x86、x64、debug、release),然后在所有项目中包含.lib并使用.h文件

    #pragma comment(lib,"debuglib.lib");
    
  • 这是DLL吗?您可以在系统中安装它(错误做法)

  • 这是否只能是标题库?不需要二进制文件


  • 我希望能够在开发时通过项目源代码进行调试(即断点和源代码导航),因此这并不能回答问题。此外,这将要求我在github项目中包含二进制文件,我认为这是一种不好的做法,而且不跨平台。包括.lib的调试版本和可用的源代码允许您调试库的源代码。这仍然不是跨平台的,并且不能解决在每个使用它的项目中包含4个二进制文件的问题。将其仅作为标题的想法是一个好主意,但是,它并不能解决必须将所有标题作为每个使用iti的库或项目的子依赖项下载的问题。我认为您只是希望以尽可能少的工作量获得最大的结果。你提到的所有“问题”对于大多数程序员来说都是日常问题。对不起,我帮不上忙了。你有没有办法解决Linux和MacOS的问题,而不是试图侮辱我?你认为每个操作系统应该有4个库吗?你是说我应该在git repo中分发12+个二进制文件吗?或者只是源代码和标题,然后强制使用它的人单独下载代码,以非自动方式编译和复制二进制文件。。。?编辑:他删除了侮辱,我认为
    CMake
    是以跨平台方式正确处理依赖关系的一个选项,但是我不完全理解这个问题。