QtCreator的qmake与nvcc和CUDA,Windows 7

5 qmake cuda visual-studio-2010 nvcc qt-creator

我已经看到许多旧尝试将QtCreator与CUDA结合起来,但它们都不再起作用了.

所以我开始这个话题,以便为每个人提供新的参考.

首先,我尝试使用以下命令编译类似书中提到的代码:

nvcc seqCuda.cu -o seqCuda
Run Code Online (Sandbox Code Playgroud)

但是我得到了错误:无效的重新清理类型名称"size_t".

我唯一能做的就是使用Visual Studio 2010编写"CUDA应用程序设计和开发"一书中的示例代码; 然而,VS2010并不是我想要使用的环境.所以我去了日志文件并接受了它使用的执行命令,它是以下内容:

nvcc -gencode=arch=compute_10,code=\"sm_10,compute_10\" --use-local-env --cl-version 2010 -ccbin "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin"  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.1\include"    --keep-dir "Release" -maxrregcount=0  --machine 32 --compile      -Xcompiler "/EHsc /nologo /Od /Zi  /MD " -o "Release\main.cu.obj" "C:\Users\Sam\Documents\Visual Studio 2010\Projects\CUDA_TestVS2010\CUDA_TestVS2010\main.cu"
Run Code Online (Sandbox Code Playgroud)

此命令创建一个目标文件.我可以成功地从seqCuda.cu执行示例代码,但我不知道如何从目标文件转到可执行文件.我想在Qt中使用qmake文件来做到这一点.

任何人都可以告诉我这个编译命令的重要部分是什么,以及如何在qmake文件中以正确的方式合并它?

现在我的问题是,我试图反汇编这个命令并用qmake重写它,是的,我在黑暗中刺伤,无法达到任何令人满意的结果.以下是我在qmake中"尝试"做到这一点.如果你可以用环境变量替换下面qmake中的任何命令,我会很感激,尤其是VC2010 bin目录.

win32 {
    INCLUDEPATH += $(CUDA_INC_PATH)
    QMAKE_LIBDIR += $(CUDA_LIB_PATH)
    ARCFLAGS = -gencode=arch=compute_10,code=\"sm_10,compute_10\" --use-local-env
    VSVERSIONFLAGS = --cl-version 2010
    VSDIRFLAG = -ccbin "c:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin"
    OTHERFLAGS = -maxrregcount=0  --machine 32 --compile     
    -Xcompiler "/EHsc /nologo /Od /Zi  /MD "
    LIBS += -lcudart

    cuda.output = ./${QMAKE_FILE_BASE}_cuda.obj
    cuda.commands = $(CUDA_BIN_PATH)/nvcc.exe $$ARCFLAGS $$VSVERSIONFLAGS $$VSDIRFLAG -  
    I$(CUDA_INC_DIR)     $$OTHERFLAGS
}

CUDA_SOURCES += seqCuda.cu
cuda.input = CUDA_SOURCES
QMAKE_EXTRA_COMPILERS += cuda
Run Code Online (Sandbox Code Playgroud)