【发布时间】:2014-03-09 13:27:05
【问题描述】:
手动编译 OpenCV 库时,必须通过在 CMake 中指定要包含的所有内容来选择他/她想要包含的内容。例如,如果我想包含一个额外的库(例如 CUDA 支持),我可以单独编译它还是必须重新编译整个库?如果前者是答案,我该怎么做?
【问题讨论】:
标签: c++ opencv compilation
手动编译 OpenCV 库时,必须通过在 CMake 中指定要包含的所有内容来选择他/她想要包含的内容。例如,如果我想包含一个额外的库(例如 CUDA 支持),我可以单独编译它还是必须重新编译整个库?如果前者是答案,我该怎么做?
【问题讨论】:
标签: c++ opencv compilation
我们以 CUDA 为例。库的一些 dll 和 lib 文件会对 CUDA 有一些依赖,而有些则不会。当您使用 Cmake 配置和生成 make 文件时,它会使用您提供的配置(打开或关闭 CUDA)创建此文件。因此,但稍后您想更改此配置并重新编译它。这就是 make 的用途。当您想更改库中的某些内容并且不想从一开始就对其进行编译时。
因此,您应该再次使用 Cmake 使用您的新配置生成新的 make 文件。您应该使用与第一次编译相同的文件夹来减少所需的编译时间。因此,当您更改配置并生成新的 make 文件时,它的编译时间可能比编译 all 库要少,因为并非每个库都具有新配置的依赖项。
但是这里有一个重要的问题。 CUDA 是一个高度依赖的库。当我检查源代码时,有一些定义表明 cuda 是打开还是关闭。所以在这种情况下,CUDA 配置的变化影响很大。如果您不仅要求 CUDA 进行所有其他配置更改,请使用新文件夹进行新配置和编译。因为当你遇到问题时,你至少可以确定你没有编译问题。
【讨论】: