初学者试图了解整个compliling +链接业务。为什么我不能像往常一样使用CGAL库构建我的C ++程序,需要使用CMake来构建它?
其他问题:我可以在IDE中使用CMake构建吗? (例如Code :: Blocks?)
@Mike:这就是我从阅读CGAL documentation得到的。我误解了什么吗?
答案 0 :(得分:1)
你被引用的CGAL文档误导了一些。
CGAL开发人员已选择CMake作为CGAL的构建系统 源包。它是一种流行的构建系统(跨平台可移植性卓越)。他们也说明了这一点 用CMake构建他们的示例程序;很自然 这些示例是源包的一部分。他们还建议您使用 CMake构建依赖于CGAL的自己的程序。
他们推荐CMake并不会让他们感到惊讶,这是公平的。
但是:当您要编写依赖于任何库的程序时 - libfoo
- 您继续假设libfoo
已经安装好了
在你的项目中使用。这意味着:
定义库的libfoo
头文件 - foo.h
,无论如何
编程接口在你的系统某处,以便你的编译器
你可以在写作时找到并阅读它们,例如代码中的#include <foo.h>
。
libfoo
二进制文件 - libfoo.a
,libfoo.so
,foo.lib
,foo.dll
,
libfoo.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构建。