我的C ++代码的一部分是基于GPU的,所以我的同事在我的同一个项目上工作,并没有可能编译它。
例如,在一个文件中有这一行:
#include "opencv2/xfeatures2d/cuda.hpp"
或者在另一个文件中有这行代码:
cv::cuda::GpuMat imgGpu, descriptorsGpu, keypoints;
imgGpu.upload(img);
只有使用CUDA(和GPU)支持才能编译。
我们如何解决这个问题?我唯一的解决方案是为包含此代码的每个源文件引入一个宏,如果你有库支持,用宏包装该部分并编辑它的值,但这是一种噩梦。
有更好的解决方案吗?
PS:我们的项目是基于makefile的
答案 0 :(得分:1)
首选方法是将所有GPU相关代码隔离到单独的库中。构建一个暴露相同API但不需要CUDA的模拟或虚拟替代库可能是值得的。如果有一天你需要用CUDA代替Vulcan或其他一些框架,这种责任分离可能是非常宝贵的。