我想在Windows上使用开源库。 (例如:Aquila,关注http://aquila-dsp.org/articles/iteration-over-wave-file-data-revisited/)但是我对“构建系统”一无所知......每个人都只是说,“解压缩tar,配置,制作,制作文件”,但是我想用它们用于Windows。有几个问题。
i)为什么我只需要“安装”源代码?为什么我不能通过将这些头文件复制到工作目录来使用这些头文件并抛出#include“。\ aquila \ global.h”??
ii)什么是配置和制作/制作安装?我无法理解他们。我只知道Windows的配置开源需要“CMake”,它是配置工具......但它实际上做了什么?
iii)虽然我已经完成了:cmake,mingw32-make,mingw32-make install ...我的编译器说“未定义引用...”。这意味着什么,我该怎么办?
答案 0 :(得分:1)
您不需要为源安装。您需要安装从源代码构建的库以及您的代码将要使用的库。
configure
是脚本的标准名称,它为即将构建的软件构建配置。它的常用方式(以及你将如何看到它)是./configure
。
make
是一个构建管理工具(因为SO上的标记会告诉你)。在linux上构建代码的最常见机制之一(等)是使用autotools
套件,该套件使用上述configure
脚本生成构建配置信息,供生成的makefile使用{{1}然后用于构建软件。 make
也是运行makefile中定义的默认构建目标的方法(通常是make
目标,通常构建适当的库/二进制文件等。)。
all
是make install
目标上make
工具的特定辅助调用,它通常将(在此情况下先前)构建的代码安装到适当的位置(在install
/ autotools
Universe中,默认位置通常位于configure
)。
/usr/local
,正如SO标记所说,是一个生成系统,可为其他构建工具(cmake
,make
等)生成配置文件。这允许开发人员一次创建构建配置并在多个平台/等上构建。 (至少在理论上)。
如果正在运行VS
,那么它应该为您告诉它使用的任何目标系统(cmake
或make
或其他)生成正确的信息。假设VS
应该允许make
正确构建软件(假设另外mingw32-make
不是mingw32-make
目标而不是cmake
)。如果这不能正常工作,那么你的系统中仍然会遗漏一些东西(并且make
可能应该已经抓住了它。)
但是要提供更多详细信息,您需要提供有关您实际获得的错误以及命令的更多详细信息。
(哦,在Windows上,特别是如果您计划使用cmake
(或其他非VS
工具)构建软件,则可能需要运行mingw32-make
是难以置信小。)
答案 1 :(得分:0)
对于 Windows,使用 cmake
或最新的 ninja
。
这个过程并不简单或直接,但可以实现。您需要编写 CMake 配置。
构建过程并不简单直接,这就是为什么存在像Java这样的语言(不过那是另一回事)
依靠 CMake
构建库,您将获得适用于 Windows 的开源库。
您可以将其作为 Windows 系统的库分发,分发并与您自己的软件集成,包括开源库,无论哪种情况,您都必须为 Windows 构建它。
编写 CMake
有帮助,为其他平台构建也会有帮助。
现在问题来了:除了 CMake for Windows Build 之外还有其他方法吗
你喜欢直接编写汇编的味道吗?
如果显然答案是否定的,则您必须编写 CMake 并为 MSVC
和其他编译器生成 sln。
只需修复一些出现的错误,在构建开源库之前阅读FAQ
、Documentation
。并在错误潜伏时修复它们。
这就像处理燃烧的铁一样,但如果您正在做一些有意义的事情,那是值得的。大多数服务器库都是开源的(例如古老的 Apache httpd
)。所以,在你做什么之前先想想。
您可以在项目中使用的有用的开源库也不多,但这是使用开源库的方法。