c++ visual-studio cuda cmake

c++ - ¿Cómo puedo configurar CMake para usar con Visual Studio 2017RC y CUDA 8.0?



visual-studio (2)

Visual Studio 2017 RC incluye una integración de CMake mucho más estricta, lo que permite omitir el paso intermedio de generar archivos de proyecto / solución y utilizar CMake de manera efectiva como el archivo de proyecto en sí. Existe suficiente documentación de Microsoft para usar estas características con archivos regulares de C ++, y hay suficiente documentación en este sitio web ( ejemplo ) para hacer que CUDA y Cmake jueguen bien cuando se trata de vincular el código CUDA con el código C ++.

En lo que no puedo encontrar información es en cómo hacer que CMake, Visual Studio 2017 RC y CUDA 8.0 jueguen bien. Este es un problema difícil, porque 2017RC no tiene integración para el SDK de CUDA de todos modos, y esperaba usar 2017RC para que mi interfaz C ++ con el código CUDA pudiera usar C ++ 14 y / o C ++ 17. Estoy trabajando en el comienzo de un gran proyecto que principalmente implicará escribir una biblioteca CUDA estática a la que se accede a través de C ++: entonces, me gustaría que el CMake se encargue de compilar mis fuentes CUDA en una biblioteca estática, y para que ayude a alimentar la información de enlace a Visual Studio. Hasta el momento, no he tenido éxito al usar las diversas funciones de FindCUDA para lograr esto, pero asumo que se debe a un malentendido de mi parte. He leído la documentación sobre la compilación separable de Nvidia, pero eso no fue útil para entender CMake.

Además, cada vez que trato de usar CMake en VS2017RC, todavía termino con los diversos archivos vcxproj que a CMake le gusta escupir. ¿Esto se debe a un error de mi parte? ¿Cómo edito los argumentos del comando de compilación, o CMakeLists.txt, para que la funcionalidad demostrada aquí funcione?


Todo lo que necesita hacer es establecer la variable CUDA_HOST_COMPILER en un compilador compatible, por ejemplo, el compilador de Visual Studio 2015.

En mi caso esto es: C: / Archivos de programa (x86) / Microsoft Visual Studio 14.0 / VC / bin / amd64 / cl.exe

Como ambas bibliotecas de tiempo de ejecución son compatibles con binarios, puede usar el compilador de 2015 dentro de CUDA y compilar todo el resto de la aplicación con el compilador de 2017.


La respuesta muy breve (y solo al momento de escribir) es que no puedes. CUDA 8 no es compatible con VS2017. Solo VS2015 es actualmente compatible.

Siempre puede encontrar las versiones de compilador / IDE que la versión de lanzamiento de CUDA admite aquí

Edite para agregar que la versión CUDA 9 agregará soporte oficial para VS2017.