【问题标题】:How to install and use open source library on Windows?如何在 Windows 上安装和使用开源库?
【发布时间】:2014-08-19 16:08:17
【问题描述】:

我想在 Windows 上使用开源库。 (例如:Aquila,关注http://aquila-dsp.org/articles/iteration-over-wave-file-data-revisited/)但是我对“构建系统”一无所知......每个人都只是说,“解压缩 tar,进行配置,制作,制作文件”在 Linux 上,但我想将它们用于 Windows。有几个问题。

i) 为什么我必须为源代码“安装”?为什么我不能通过将这些头文件复制到工作目录并抛出 #include ".\aquila\global.h" 来使用这些头文件??

ii) 什么是配置和制作/制作安装?我无法理解他们。我只知道Windows下的配置开源需要“CMake”,它是配置工具……但它到底是做什么的呢??

iii) 虽然我已经完成了:cmake、mingw32-make、mingw32-make install... 我的编译器说“对...的未定义引用”。这意味着什么,我应该如何处理它们?

【问题讨论】:

    标签: makefile open-source cmake build-system


    【解决方案1】:

    您不需要为源安装。您确实需要安装从该源代码构建的库以及您的代码将要使用的库。

    configure 是为将要构建的软件进行构建配置的脚本的标准名称。它的通常运行方式(以及您将如何看到它被提及)是./configure

    make 是一个构建管理工具(正如 SO 上的标签会告诉你的那样)。在 linux(等)上构建代码的最常见机制之一是使用 autotools 套件,它使用上述 configure 脚本生成构建配置信息,供生成的 makefile 使用,make 然后使用它来构建软件。 make 也是运行 makefile 中定义的默认构建目标的方式(通常是 all 目标,通常构建适当的库/二进制文件/等)。

    make install 是在install 目标上对make 工具的特定、次要调用,它(通常)将(在这种情况下之前)内置代码安装到适当的位置(在autotools/ configure Universe 默认位置一般在/usr/local下)。

    cmake 又如 SO 标签所说,是一个为其他构建工具(makeVS 等)生成配置文件的构建系统。这允许开发人员创建一次构建配置并在多个平台/等上构建。 (至少在理论上)。

    如果运行cmake 工作正常,那么它应该为您告诉它使用的任何目标系统(makeVS 或其他)生成正确的信息。假设 make 应该允许 mingw32-make 正确构建软件(另外假设 mingw32-make 不是一个独特的 cmake 目标而不是 make)。如果这不能正常工作,那么您的系统中仍然缺少某些东西(cmake 可能应该已经注意到了)。

    但要提供更多详细信息,您需要提供更多关于您实际遇到的错误以及来自什么命令的详细信息。

    (哦,在 Windows 上,特别是如果您打算使用 VS(或其他一些非 mingw32-make 工具)构建您的软件,那么您需要运行 mingw32-make install 的机会是难以置信地 小)。

    【讨论】:

      【解决方案2】:

      对于 Windows,请使用 cmake 或最新的 ninja

      这个过程并不简单或直接,而是可以实现的。您需要编写 CMake 配置。

      构建过程并不简单直接,这就是为什么存在像Java这样的语言(不过那是另一回事)

      依靠CMake 构建库,您将获得适用于 Windows 的开源库。

      您可以将此作为 Windows 系统的库分发,分发并与您自己的软件集成,包括开源库,在任何一种情况下,您都必须为 Windows 构建它。

      CMake 有帮助,为其他平台构建也会有帮助。

      现在问题来了:除了 CMake for Windows Build 还有其他方法吗

      你喜欢直接写汇编的味道吗?

      如果答案显然是否定的,则必须编写 CMake 并为 MSVC 和其他编译器生成 sln。

      只需修复一些错误,在构建开源库之前阅读FAQDocumentation。并在它们潜伏时修复它们。

      这就像处理燃烧的铁,但如果你在做一些有意义的事情,它就会有所回报。大多数服务器库都是开源的(例如古老的Apache httpd)。所以,在你在做什么之前,请三思。

      您可以在项目中使用的有用开源库也不多,但这是使用开源库的方式。

      【讨论】:

        猜你喜欢
        • 2010-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-14
        相关资源
        最近更新 更多