根据您的库支持编译代码

时间:2017-03-09 15:19:54

标签: c++ makefile build gpu

我的C ++代码的一部分是基于GPU的,所以我的同事在我的同一个项目上工作,并没有可能编译它。

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

#include "opencv2/xfeatures2d/cuda.hpp"

或者在另一个文件中有这行代码:

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

只有使用CUDA(和GPU)支持才能编译。

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

有更好的解决方案吗?

PS:我们的项目是基于makefile的

1 个答案:

答案 0 :(得分:1)

首选方法是将所有GPU相关代码隔离到单独的库中。构建一个暴露相同API但不需要CUDA的模拟或虚拟替代库可能是值得的。如果有一天你需要用CUDA代替Vulcan或其他一些框架,这种责任分离可能是非常宝贵的。