繁体   English   中英

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

[英]Why do I need to build my C++ program using CGAL with CMake?

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

附加问题:我可以在IDE中使用CMake进行构建吗? (例如Code :: Blocks?)

@Mike:好吧,这就是我从阅读CGAL文档中得到的 我误会了吗?

您所引用的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库和头文件。 通常可以通过(Linux / OS X)通过使用OS的程序包管理器安装OS提供的libcgal开发程序包,或者通过下载并运行安装程序来实现(Windows)。 然后,您无需了解或关心CGAL的构建方式。

如果由于某种原因而无法获得开发包,或者在技术上对“从第一原理”安装库感兴趣,则需要从源包中构建和安装它。 由于源软件包的构建系统是CMake,因此您需要学习如何使用CMake进行构建和安装。

一旦安装 CGAL,在自己的项目中使用你只需要采取的使用库的日常要求护理: -

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

无论是在IDE中使用CMake,Scons,Autotools,makefile,项目设置来执行此操作,还是仅在命令提示符下使用正确的选项运行编译器和链接器,完全是您自己的选择。 (尽管最后一个是最有效的说明,但是当您是初学者时,尝试了解整个编译和链接业务 )。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM