2

我想在 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... 我的编译器说“未定义的引用...”。这意味着什么,我应该如何处理它们?

4

2 回答 2

1

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

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

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

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

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

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

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

(哦,在 Windows 上,特别是如果您计划使用VS(或其他一些非mingw32-make工具)构建您的软件,那么您需要运行的机会mingw32-make install非常)。

于 2014-08-19T16:20:56.247 回答
0

对于 Windows 使用cmake或最新ninja的 .

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

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

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

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

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

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

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

如果显然答案是否定的,您将不得不编写 CMake 并为MSVC其他编译器生成 sln。

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

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

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

于 2021-02-17T04:59:28.267 回答