为什么我需要使用CGake和CMake构建我的C ++程序?

时间:2017-02-10 18:06:46

标签: c++ linker codeblocks cgal

初学者试图了解整个compliling +链接业务。为什么我不能像往常一样使用CGAL库构建我的C ++程序,需要使用CMake来构建它?

其他问题:我可以在IDE中使用CMake构建吗? (例如Code :: Blocks?)

@Mike:这就是我从阅读CGAL documentation得到的。我误解了什么吗?

2 个答案:

答案 0 :(得分:1)

你被引用的CGAL文档误导了一些。

CGAL开发人员已选择CMake作为CGAL的构建系统 源包。它是一种流行的构建系统(跨平台可移植性卓越)。他们也说明了这一点 用CMake构建他们的示例程序;很自然 这些示例是源包的一部分。他们还建议您使用 CMake构建依赖于CGAL的自己的程序。

他们推荐CMake并不会让他们感到惊讶,这是公平的。 但是:当您要编写依赖于任何库的程序时 - libfoo - 您继续假设libfoo已经安装好了 在你的项目中使用。这意味着:

  • 定义库的libfoo头文件 - foo.h,无论如何 编程接口在你的系统某处,以便你的编译器 你可以在写作时找到并阅读它们,例如代码中的#include <foo.h>

  • libfoo二进制文件 - libfoo.alibfoo.sofoo.libfoo.dlllibfoo.dylib,视情况而定,适用于您的操作系统 - 包含 库的实现也在你的系统上的某个地方 您的链接器可以找到它们并将它们与您的目标代码链接起来 程序来制作完整的可执行文件。 (并且,在动态的情况下 库,运行时加载器可以找到它们的某个地方。)

因此,就构建您的程序而言,这根本不重要 libfoo头文件和二进制文件如何成为它们的位置 系统,无论是由CMake还是由仙女放在那里。它只是重要的 那里。然后,如果您愿意,可以使用CMake构建您的程序 其他你喜欢的方式。

当然,当你决定编写你的程序时可能就是这种情况 libfoo已在您的系统上安装 。在那种情况下,你 安装它。然后在假设它的情况下继续你的程序 安装

您需要安装CGAL库和头文件。那会 通常可以通过安装libcgal开发包来实现(Linux / OS X) 由您的操作系统使用其软件包管理器提供,或(Windows)通过下载提供 并运行安装程序。那么你不需要知道或关心如何CGAL 建成。

如果由于某种原因无法获得开发包或技术上有兴趣 在“从第一原则”安装库,然后你需要构建和 从源包安装它。作为源包的构建系统是 CMake,您需要学习如何使用CMake构建和安装它,并且这样做。

安装CGAL 后,要在您自己的项目中使用,您只需要小心 使用库的例行要求: -

  • 您告诉编译器在哪里可以找到库的头文件,如果它们是 不在任何默认的包含目录中。
  • 告诉链接器链接库。
  • 您告诉链接器在哪里找到该库,如果它不在其中一个库中 默认搜索目录。

你是否使用CMake,Scons,Autotools,一个makefile,项目 IDE中的设置或只是在命令提示符下运行编译器和链接器 选择正确的选项完全是您自己的选择。 (虽然最后是 当你是初学者试图理解时,最有效率的指导 整个编译和链接业务)。

CGAL示例程序可以使用Code :: Blocks作为普通程序构建 具有库依赖性的简单项目,只要您安装了CGAL即可 事先某种方式。

答案 1 :(得分:0)

您可以在调用cmake时在命令行上传递代码块生成器。它将创建您需要使用的文件,并使用您的ide构建。