根据您的库支持编译代码

Compile code based on your library support

本文关键字:支持 编译 代码      更新时间:2023-10-16

我的C 代码的一部分是基于GPU的,因此我在同一项目上有效的一所大学没有可能编译。

例如,在一个文件中,有此行:

#include "opencv2/xfeatures2d/cuda.hpp"

或在另一个文件中,有这类代码:

    cv::cuda::GpuMat imgGpu, descriptorsGpu, keypoints;
    imgGpu.upload(img);

只能使用CUDA(和GPU)支持进行编译。

我们如何解决这个问题?我唯一的解决方案是为包含此代码的每个源文件引入一个宏,用宏包裹该部分并在库支持的情况下编辑其值,但这是一种噩梦。

有更好的解决方案吗?

ps:我们的项目基于makefile

首选方法是将所有依赖的代码隔离到单独的库中。建立一个模拟或虚拟替代库,该图书馆暴露了相同的API,但不需要CUDA。如果有一天您需要将CUDA代替Vulcan或其他一些框架,那么责任的分离可能是无价的。