Почему cmake add_dependencies не работает для библиотек с кодом CUDA? - PullRequest
0 голосов
/ 28 февраля 2019

В cmake вы можете использовать add_dependencies, чтобы убедиться, что одна библиотека обновлена ​​и построена раньше другой.Это прекрасно работает для библиотеки с исходниками C ++ (myLib в коде примера), однако не работает для библиотеки с исходниками CUDA (myCudaLib в коде примера).

Сначала я убедился, что всебиблиотеки создаются.Когда я сейчас изменяю файл myLib и собираю mainExec, myLib автоматически перестраивается перед ним.Если я попробую то же самое с myCudaLib, это только скажет мне, что все проекты обновлены.

Кто-нибудь знает, почему изменения не обнаруживаются и библиотека не перестраивается с файлами CUDA?

cmake_minimum_required(VERSION 3.13)

project(cmakeTest LANGUAGES CXX CUDA)

add_executable(mainExec main.cpp)

add_library(myLib foo.h foo.cpp)
add_dependencies(mainExec myLib)
target_link_libraries(mainExec PRIVATE myLib)

add_library(myCudaLib foo.cuh foo.cu)
add_dependencies(mainExec myCudaLib)
target_link_libraries(mainExec PRIVATE myCudaLib)

Исходные файлы не содержат ничего существенного, только функция void foo () с пустым телом (или единственная переменная, когда я изменяю их, чтобы увидеть, перестраиваются ли библиотеки).

В случаеэто имеет значение: Windows 10, Visual Studio 2017, Cmake 3.13, Cuda 10.0

1 Ответ

0 голосов
/ 01 марта 2019

Поведение Visual Studio, которое не обнаруживает изменения в файлах CUDA, вызвано ошибкой взаимодействия CUDA 10.0 (и, по-видимому, некоторых из предыдущих версий) с Visual Studio 2017 (2015 работает нормально).Это не происходит, если ваш проект находится в определенных папках (C:\ProgramData и C:\Users\userName\AppData\Local).Полное обсуждение на форуме NVIDIA можно найти здесь .

CUDA 10.1 исправляет ошибку (еще не подтвержденную NVIDIA, но, кажется, работает для некоторых людей на форуме, и это также работает для меня).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...