linux下如何编译CUDA+QT(qtcreator下)

2025-10-25 04:42:32

1、先看一下我已经配置好的qt项目,在资源管理器中,已经可以看到普通C/C++代码和cuda代码是分开显示的。这个是qt设置的问题,但是已经可以在一起编译执行了。

linux下如何编译CUDA+QT(qtcreator下)

2、具体操作,修改qt项目配置文件pro,在配置后面加入如下代码,我们就实现了qt+cuda的交叉编译。

# 让你的项目可以看到后缀cu的cuda代码文件

OTHER_FILES +=  ./Bll/ImageReconstruction/Cuda/CudaFDK.cu \

   ./Bll/ImageReconstruction/Cuda/CudaFDK_kernel.cu \

   ./Bll/ImageReconstruction/Cuda/CudaFDK_SS.cu \

    ./Bll/ImageReconstruction/Cuda/CudaFDK_SS_kernel.cu

# CUDA配置,具体按照你系统环境更改

CUDA_SOURCES += ./Bll/ImageReconstruction/Cuda/CudaFDK.cu \

    ./Bll/ImageReconstruction/Cuda/CudaFDK_kernel.cu \

    ./Bll/ImageReconstruction/Cuda/CudaFDK_SS.cu \

    ./Bll/ImageReconstruction/Cuda/CudaFDK_SS_kernel.cu

CUDA_SDK = "/usr/local/cuda-5.0/"   # cudaSDK路径

CUDA_DIR = "/usr/local/cuda-5.0/"            # CUDA tookit路径

SYSTEM_NAME = linux         # 自己系统环境 'Win32', 'x64', or 'Win64'

SYSTEM_TYPE = 32            #操作系统位数 '32' or '64',

CUDA_ARCH = sm_21           # cuda架构, for example 'compute_10', 'compute_11', 'sm_10'

NVCC_OPTIONS = --use_fast_math

# include paths

INCLUDEPATH += $$CUDA_DIR/include

# library directories

QMAKE_LIBDIR += $$CUDA_DIR/lib/

CUDA_OBJECTS_DIR = ./

# The following library conflicts with something in Cuda

#QMAKE_LFLAGS_RELEASE = /NODEFAULTLIB:msvcrt.lib

#QMAKE_LFLAGS_DEBUG   = /NODEFAULTLIB:msvcrtd.lib

# Add the necessary libraries

CUDA_LIBS =  cudart cufft

# The following makes sure all path names (which often include spaces) are put between quotation marks

CUDA_INC = $$join(INCLUDEPATH,'" -I"','-I"','"')

NVCC_LIBS = $$join(CUDA_LIBS,' -l','-l', '')

#LIBS += $$join(CUDA_LIBS,'.so ', '', '.so')

# Configuration of the Cuda compiler

CONFIG(debug, debug|release) {

    # Debug mode

    cuda_d.input = CUDA_SOURCES

    cuda_d.output = $$CUDA_OBJECTS_DIR/${QMAKE_FILE_BASE}_cuda.o

    cuda_d.commands = $$CUDA_DIR/bin/nvcc -D_DEBUG $$NVCC_OPTIONS $$CUDA_INC $$NVCC_LIBS --machine $$SYSTEM_TYPE -arch=$$CUDA_ARCH -c -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME}

    cuda_d.dependency_type = TYPE_C

    QMAKE_EXTRA_COMPILERS += cuda_d

}

else {

    # Release mode

    cuda.input = CUDA_SOURCES

    cuda.output = $$CUDA_OBJECTS_DIR/${QMAKE_FILE_BASE}_cuda.o

    cuda.commands = $$CUDA_DIR/bin/nvcc $$NVCC_OPTIONS $$CUDA_INC $$NVCC_LIBS --machine $$SYSTEM_TYPE -arch=$$CUDA_ARCH -O3 -c -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME}

    cuda.dependency_type = TYPE_C

    QMAKE_EXTRA_COMPILERS += cuda

}

linux下如何编译CUDA+QT(qtcreator下)

3、将nvcc编译和qmake编译集成到一起的好处就是,软件开发人员不需要头疼两种混合编译器的配置,只需要关注程序编写即可。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢