如何在没有 Cygwin 或 Visual Studio 的情况下编译 Magick++?
Posted
技术标签:
【中文标题】如何在没有 Cygwin 或 Visual Studio 的情况下编译 Magick++?【英文标题】:How to compile Magick++ without Cygwin or Visual Studio? 【发布时间】:2019-10-02 01:54:01 【问题描述】:我正在我的 Windows PC 上设置一个开发环境,这样我就有更多的地方来处理一个项目。我已经在我的系统上安装了 VS Build Tools 2019 以及 CMake v3.15.3、GnuWin32 Make v3.81 和 LLVM CLang v8.0.1。
所有有关 Magick++ 的官方文档仅显示如何使用 Visual Studio 正确、Cygwin 或 MinGW 进行编译。有谁知道如何在没有这些的情况下编译它?我的 SSD 上的空间很紧,我宁愿不安装永远不会再碰的东西。
我正在考虑使用 Ninja 来构建它,因为它带有 VS Build Tools。有人建议使用 Make,但不用于为 Linux 系统编译东西?
编辑: 据我所知,ImageMagick 不附带 CMakeLists.txt
文件。
我也听说过msbuild.exe
。
【问题讨论】:
【参考方案1】:看起来您拥有编译程序所需的一切。假设当您安装构建工具时,您安装了 C++ 的东西。除非您真的想使用 clang++ 编译,否则您可能可以通过卸载 LLVM 来节省一些空间。 LLVM Windows 依赖于 Build Tools 库,我从来没有把它弄乱到让它运行良好;我在 Mac 或 Linux 上工作。不过,我确实找到了来自 LLVM 的 this 指南。看起来需要 Visual Studio,因此最好将其卸载。
如果空间是一个问题(你没有说你实际有多少可用空间),MinGW 或 Cygwin 比 MS C++ 构建工具小得多。
Ninja 不是编译器;它类似于make,因为它可用于自动编译和链接您的程序,但这两个工具都是通过利用编译器/链接器和 C++ 库来实现的。 make 也可通过 MinGW 或 Cygwin 用于 Windows。
cmake 是 ninja/make 之上的额外抽象层,因为它可以根据您在系统上安装的工具为您创建 ninja.build 或 makefile。 cmake 确实使编译过程变得更加容易。如果存在,cmake 将默认选择 ninja。如果您能够使用 cmake,该项目将至少包含一个 CMakeLists.txt 文件。
我已经有一段时间没有使用 MinGW 或 Cygwin(一个或另一个,你不需要两者都需要),但是当我涉足类似的东西(MSYS2)时,如果你全部使用它只需要不到 700 MB想要使用 C++。
【讨论】:
我没有要求解释 Ninja、Make 或 CMake。我知道那些是什么。如果提交答案,请确保它确实解决了问题。 那你在问什么?按照标题,您问的是“如何在没有编译器的情况下编译 x?”这并不意味着对 ninja/make/cmake/cygwin/mingw/LLVM 实际上是什么有很多了解。 这也让我觉得你应该只下载一个二进制文件。它以您可能想要的每种格式正式提供。如果您想半自动地保持最新状态,您也可以使用像 Chocolatey 这样的包管理器。您下载了一些东西来编译 LLVM,imagemagick 指南在任何时候都不需要 LLVM。 LLVM 还需要 Visual Studio,那么您的最终目标是什么?因此,要将球扔回你的球场,如果提出问题,请确保你的要求很明确。 首先,我已经通过安装程序安装了 LLVM。您从哪里得知我正在尝试编译 LLVM?其次,我说的是 Magick++ (imagemagick.org/www/script/magick++.php),而不是 CLI 的 ImageMagick。根据链接页面,除非我弄错了,否则获得 Magick++ 的唯一方法是通过构建。第三,我现在确实意识到我安装的一些东西是不必要的。 第四,VS Build Tools 是 VS 自带的一切除了编辑器本身。它适合那些想要为 Windows 编译但想要使用替代编辑器的人。顺便说一句,VS 编辑器在后台使用msbuild.exe
来构建解决方案,所以...以上是关于如何在没有 Cygwin 或 Visual Studio 的情况下编译 Magick++?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 cygwin 使用 Visual Studio BuildTools 而不是 gcc?
程序 .exe 在 cygwin 上运行,但在调试和在 Visual Studio 上运行时出现异常