簡體   English   中英

為什么cmake add_dependencies不適用於帶有CUDA代碼的庫?

[英]Why does cmake add_dependencies not work for libraries with CUDA code?

在cmake中,您可以使用add_dependencies確保一個庫是最新的並且在另一個庫之前構建。 這對於具有C ++源代碼的庫(示例代碼中的myLib)非常有效,但是對於具有CUDA源代碼的庫(示例代碼中的myCudaLib)則不起作用。

首先,我確保所有庫都已構建。 現在,當我更改myLib文件並構建mainExecmyLib將自動在其之前重新構建。 如果我使用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

Visual Studio未檢測到CUDA文件中的更改的行為是由於CUDA 10.0(顯然是某些以前的版本)與Visual Studio 2017(2015工作正常)交互時出現的一個錯誤引起的。 如果您的項目位於某些文件夾( C:\\ProgramDataC:\\Users\\userName\\AppData\\Local )中,則不會發生。 可以在此處找到有關NVIDIA論壇的完整討論。

CUDA 10.1修復了該錯誤(尚未得到NVIDIA的確認,但似乎對論壇上的某些人有用,它也對我有用)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM