究竟什么是从源头"buidling"的,它是如何工作的



所以我真的不明白这是怎么回事,但后来我解释了。首先,万一你需要它,我在笔记本电脑上运行的是64位的Ubuntu 12.04。

作为一个建筑工具,我使用CMake。我想加载到我的项目OpenCV, MRPT (http://www.mrpt.org/)和libfreenect。它们都有一个"源代码"。我不明白的是他们说的"从源代码构建"。我如何与他们一起制作一个项目?我是否需要建立每一个单独和某种方式,但然后在我的项目或我下载源代码,并在一个一起构建它们?正如你所看到的,我真的很困惑我该做什么……我从每个源代码运行CMakeList.txt和运行一个CMakeList.txt,所有其他的CMakeList.txt?

在更少的情况下,如果我想从源代码构建两个或更多的库,我该怎么做?

我想要一个一般的答案(这个"从源代码构建"是如何工作的)和一个专门针对我提到的(CMake, OpenCV, MRPT, libfreenect)的答案。我希望我讲清楚了我不明白的地方。

这取决于'主'项目。一般来说,在c/c++世界中,你的项目必须知道如何调用每个子项目/库的构建过程,或者你的项目需要知道如何在自己构建每个外部项目后包含&链接结果。

如果需要,您也可以混合使用这两种方法,但我认为尽可能使用一种方法更干净。

在第一种情况下,如果所有子项目提供cmake构建文件(CMakeLists.txt),你可以尝试add_subdirectory()每个,看看是否有任何冲突。例如,谷歌测试可以很容易地包括这种方式,它给你的项目一些全局变量,方便以后链接。

或者如果上面的方法给出问题或子项目不提供CMakeLists.txt你可以使用ExternalProject_add()。它需要更多的工作,您必须手动处理包含/链接配置与您的项目,但它使子项目更加独立。例如,如果与您的项目有冲突的目标,或者子项目没有提供CMakeLists.txt。

最后一种方法包括分别构建和安装子项目,使用项目中的配置变量指向子项目的includes/libraries路径。查看CMake:How Find Libraries

相关内容

  • 没有找到相关文章

最新更新