将第三方库与程序可执行文件分开

时间:2018-01-04 20:33:18

标签: c++ visual-studio-2015

我已经开始使用一些使用少量第三方开源库的c ++项目。我很好奇,我应该如何构建这个项目以避免许可证污染?

如果我要编译单个可执行文件,那么我必须遵守第三方库使用的相同开源许可证,因为我的工作将包含二进制形式的库,对吗?

我正在使用visual studio作为ide和编译器。 Visual Studio中是否有可以配置的选项,以便在构建项目时,所有第三方库都单独包含在它们自己的目录中,允许我的程序使用它们而不必编译成我的可执行文件?这样我就可以根据不同的许可证授权我的项目了吗?

另外,我还有一个来自我项目中包含的其中一个库的源文件。我猜这将是一个问题,无论我如何分离库,因为这个源文件被编译到我的应用程序中?

1 个答案:

答案 0 :(得分:3)

许可条款通常不会随您放入文件的文件夹而改变!

如果您链接的库(.lib)是GPL,那么您的代码是派生作品,也是GPL。同样,如果您直接从GPL项目使用源代码,那么您还创建了派生作品。其他更宽松的许可证,如麻省理工学院/ BSD,没有这个功能。

如果库是LGPL并且您动态链接它们(即您运送.dlls -  假设你在Windows上)那么你的代码不是GPL。

请参阅https://www.gnu.org/licenses/gpl-faq.html,但请注意,他们对您应如何许可代码的看法是可以理解的。