在 Windows 10 中从源代码构建 taskwarrior 时缺少 GNUTLS 或 libuuid

GNUTLS or libuuid missing while building taskwarrior from source code in Windows 10

在过去的 4 天里,我一直在努力在 windows 10 上获得 taskwarrior 和 taskwarrior 服务器 运行。事实证明这对我来说是一个很大的挑战。

我按照以下步骤操作:"Building the Stable Version" 在 https://taskwarrior.org/docs/build.html 上创建了一个文件夹:

C:\taskwarrior

为 VC 2017

打开了开发者命令提示符
cd /d C:/taskwarrior

git clone https://github.com/GothenburgBitFactory/taskwarrior.git taskwarrior.git

cd taskwarrior.git

git checkout master

然后取决于我是否尝试在启用同步的情况下构建 taskwarrior(自动,除非手动禁用):

cmake -DCMAKE_BUILD_TYPE=release .

GNUTLS_library is missing

或:

cmake -DCMAKE_BUILD_TYPE=release . -DENABLE_SYNC=OFF

-- libuuid not found.

到目前为止所遵循的步骤和尝试的简短摘要:

  1. 已从以下位置下载并安装 Microsoft Visual C++ 2017 Redistributable(x64 和 x86):https://visualstudio.microsoft.com/vs/features/cplusplus/
  2. 确保 cl 已按照 Microsoft 文档中的建议提供:https://msdn.microsoft.com/en-us/library/cyz1h6zd.aspx
  3. 已下载 MinGW 安装管理器并按照 http://www.mingw.org/wiki/Getting_Started 上的建议安装基础包:

If you do wish to install mingw-get-inst.exe's obligatory set, (including the GNU C Compiler, the GNU Debugger (GDB), and the GNU make tool), you should select the mingw-base package for installation.

  1. https://cmake.org/download/
  2. 安装 Cmake
  3. 运行管理员模式cmd中的上述命令
  4. 打开 Cmake 选择源文件夹:

    C:/taskwarrior/taskwarrior.git

带有构建文件夹:

C:/taskwarrior

这给出了与我在上述 VC 2017 年通过开发人员命令提示尝试时完全相同的错误,从中我得出结论,我在上述命令中没有错字。

  1. 尽管应该已经安装了 Mingw,但仍然找不到 GNU(即使在重新启动后)。所以我尝试从以下位置手动下载它:
  2. http://gnuwin32.sourceforge.net/packages/make.htm
  3. https://sourceforge.net/projects/gnuwin32/

  4. 我在命令提示符下尝试了以下命令:

    install libgnutlsxx28 gnutls-dev install gnutls-dev

  5. 根据基于 Debian 发行版的 taskwarrior 安装文件中的建议,我尝试了:

    libgnutls-dev

    打开 IncrediBuild 版本 9.2.1 安装程序,我目前不知道它的作用。

  6. 我尝试从以下网址下载 libuuid 库:https://sourceforge.net/projects/libuuid/ 但我目前不知道如何构建和安装它。

  7. 我尝试在 cmd 中通过 python 安装它:

    easy_install python-libuuid

  8. 从以下源代码学习构建程序:https://msdn.microsoft.com/en-us/library/cyz1h6zd.aspx

  9. https://github.com/codebox/bitmeteros/wiki/How-to-build-on-Windows 学习和实践。
  10. 最后我了解到我已经安装了 Cygwin,并且我可以通过重新安装 cygwin 和 checking/marking 任务包来简单地安装旧版本的 taskwarrior。所以我有 taskwarrior 运行,但没有 taskwarrior 服务器。此外,我正在尝试学习如何从源代码构建 code/projects,因此我正在尝试进行成功构建以增加我的技能组合和工具集。
  11. https://www.gnutls.org/manual/gnutls.html#Downloading-and-installing 上安装 GNU TLS 3.6.2 的说明仅限于:

The package is then extracted, configured and built like many other packages that use Autoconf. For detailed information on configuring and building it, refer to the INSTALL file that is part of the distribution archive. Typically you invoke ./configure and then make check install.

但是,Windows x64 下载文件的最新 GNUTLS:gitlab 上的最新 w64 版本:https://www.gnutls.org/download.html 名为 artifacts.zip 不包含名为 INSTALL 的文件。

所以我目前正在努力了解如何使用 autoconf 配置和构建。

问题: 你知道我如何在 windows 10 上安装 GNU 库 and/or libuuid 库吗?

我可能误解了上下文。 GnuTLS 似乎是 works/is 为 linux/debian 操作系统制作的程序。

尽管如此,以下两种解决方案在以下方面有效:

  1. 在 Windows 中查找和使用 UUID 库。
  2. 解决 XY 问题并在 "windows pc"(上面有 Linux)上使用 GnuTLS。:

对于缺少UUID缺少库错误:

  1. 打开资源管理器>转到C:(或其他系统盘)>搜索:uuid.lib>记住the/any uuid.lib文件的路径。 (对我来说C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Lib worked
  2. 打开 Cmake 并在 UUID_LIBRARY_DIR 中输入:
  3. C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Lib
  4. 然后在UUID_LIBRARY中输入: C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Lib/Uuid.Lib 在步骤 1 中,您将 C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Lib 替换为您自己找到的路径 UUID.lib。

这使得 CMake 克服了 windows 中的 UUID 错误。

现在对于 GnuTLS,我无法在 windows 中找到解决方案。 但是当我阅读任务服务器安装指南时:https://gitpitch.com/GothenburgBitFactory/taskserver-setup#/4/4 我了解到 Taskwarrior 并不打算在 Windows itself/natively 上 运行,而是在 linux 环境中(具体来说,linux 分布 Ubuntu 建议安装在 windows 上,如此处指定:https://taskwarrior.org/download/)只需单击 1 次即可完全下载并安装 linux 发行版(目前对我来说它看起来像一个模拟器)。

在 windows 商店中,可以下载 Ubuntu 和其他 Linux 发行版作为 Debian GNU/Linux:https://docs.microsoft.com/en-us/windows/wsl/install-win10。由于我在安装 GnuTLS 时遇到了很多困难,所以我尝试了 debian GNU/Linux 发行版,希望它会预装在发行版中。以下命令在 debian GNU/Linux:

上成功安装了 taskwarrior 和 GnuTLS 以及 Taskserver
  1. sudo apt-get update
  2. sudo apt-get install taskwarrior
  3. cd /home/a/
  4. 然后创建新目录'taskwarrior'
  5. mkdir taskwarrior
  6. cd /home/a/taskwarrior

    Debian 中的任务服务器安装:

  7. sudo apt install g++

  8. sudo apt install libgnutls28-dev
  9. sudo apt install uuid-dev
  10. sudo apt install cmake
  11. **sudo apt install gnutls-utils**

gnutls 失败所以:

  1. **sudo apt-get update**
  2. **sudo apt install gnutls-utils**
  3. sudo apt-get update
  4. sudo apt-get install git-core

来源:https://gitpitch.com/GothenburgBitFactory/taskserver-setup#/6/1 建议您输入: git clone --recurse-submodules=yes https://github.com/GothenburgBitFactory/taskserver.git taskserver.git 给出了以下错误:optionrecurse-submodulestakes no value,因此将其重写为:

  1. git clone https://github.com/GothenburgBitFactory/taskserver.git taskserver.git

  2. cd taskserver.git/

  3. git checkout master

  4. cmake -DCMAKE_BUILD_TYPE=release .

  5. make

现在您可以按照以下所述测试构建:https://gitpitch.com/GothenburgBitFactory/taskserver-setup#/6/8 注意:SOURCEDIR现在是home/a/taskwarrior/taskserver.git(/test我目前不知道/test是source的子文件夹还是实际的source目录)

  1. sudo make install

注意:您可以通过以下方式验证 GnuTLS 安装:

  1. task diagnostics | grep libgnutls
  2. sudo apt install taskd

未回答 以上仅回答了我一半的问题(并解决了XY-problem)。 GnuTLS 在 windows 上的安装本身仍然没有解决。我目前不确定下载

GNU for windows

Latest w64 version on gitlab gnutls_3_6_0_1:mingw64

https://gnutls.org/download.html

  1. 它包含一个 lib 和一个 bin 文件夹,这似乎表明即使 "windows" 下列出的文件也是为 Linux 操作系统(OS)设计的(因为我认为那些类型的文件夹不常用 windows/I 不知道如何处理 them/how 安装它们)。
  2. 这意味着 GnuTLS 假定唯一的应用程序 GnuTLS,即使在 Windows 操作系统上也发生在 Linux 系统。也可能只是我缺乏 knowledge/work/understanding 中如何 use/install 中的那些文件 windows。

因此,如果有人仍然可以回答 windows 上的 GnuTLS 是如何应用的,我将不胜感激!

我不确定它是否仍然与您的问题相关,但我能够使用此处的 cmake 行在 64 位 cygwin(在 Win7 上)下构建 taskwarrior v2.5.1: TW-1845 Cygwin build fails, missing get_current_dir_name

cmake 行后跟 make:

cmake -DHAVE_GET_CURRENT_DIR_NAME=0