【发布时间】:2023-03-10 23:10:02
【问题描述】:
基本上,我想将现有项目中的一些常用功能分离到一个单独的库项目中,但也允许项目在我包含此库时保持跨平台。
我应该澄清一下,当我说“跨平台”时,我主要关心的是针对多 CPU 架构 (x86/x86_64/ARM) 进行编译。
我在我的许多软件项目中都使用了一些有用的功能。所以我决定在项目之间不断复制这些源代码文件是不好的做法,我应该从它们中创建一个单独的库项目。
我认为静态库比共享库更适合我的需求。但是,我想到静态库将依赖于平台,并且通过将其包含在我的项目中,这将导致这些项目也依赖于平台。与包含源代码本身相比,这显然是一个缺点。
我想到了两种可能的解决方案:
包括为每个平台编译的静态库。
继续包含源代码。
我确实对上述两个选项都有保留。选项 1 似乎过于复杂/浪费。选项 2 似乎是不好的做法,因为每个项目都可能修改“库”并变得不同步;特别是如果库源代码与所有其他项目源代码存储在同一目录中。
如果您提供有关如何解决此问题的任何建议,或者有关其他人以前如何解决此问题的信息,我将不胜感激?
【问题讨论】:
-
您有多个平台。构建一个公共库,无论是共享的还是静态的,几乎没有什么区别。就像您的项目代码一样,您的公共库也必须为每个平台构建。没有转义(除非像 C++ 模板头文件库这样的东西,它没有平台相关的图像,因为它是在编译客户端代码期间引入的)。
-
谢谢,我明白了。正如我所说,我可以为不同的平台预编译静态库。但是,我想知道是否有人可以推荐一个简洁的解决方案。
标签: c cross-platform static-libraries