[英]CMake can not find opencl sdk by NVIDA
我剛剛安裝了 NVIDIA CUDA 工具包,以使用它在 Windows 8.1 上開發 OpenCL 應用程序。
我遇到了一些問題:
1- FinedOpenCl.cmake 不起作用,因為 opencl_dir 不是由 Nvidia 工具包設置的。
cmake文件是:
FIND_PACKAGE(OpenCL REQUIRED)
INCLUDE_DIRECTORIES(${OPENCL_INCLUDE_DIR})
和 cmake 錯誤是:
CMake Error at C:/Program Files (x86)/CMake/share/cmake-3.1/Modules/FindPackageHandleStandardArgs.cmake:138 (message):
Could NOT find OpenCL (missing: OPENCL_LIBRARY OPENCL_INCLUDE_DIR)
Call Stack (most recent call first):
C:/Program Files (x86)/CMake/share/cmake-3.1/Modules/FindPackageHandleStandardArgs.cmake:374 (_FPHSA_FAILURE_MESSAGE)
cmake/FindOpenCL.cmake:35 (find_package_handle_standard_args)
CMakeLists.txt:5 (FIND_PACKAGE)
2- c++ 接口沒有 cl.hpp。
3- 標題和庫位於不同的目錄中,因此很難在應用程序中使用它們。
我的問題:
1-我能做些什么來解決它們嗎?
2-在設置過程中是否有任何選項可以自動進行所需的設置。
$ENV{OPENCL_DIR}
$ENV{NVSDKCOMPUTE_ROOT} # NVIDIA on Windows
$ENV{CUDA_PATH_V6_5}
$ENV{CUDA_PATH}
此外,根據路徑是否有最終的“\\”,我看到了一些麻煩——這似乎是 CMake 中的某種錯誤,它無法自動處理這兩種情況。 因此,請嘗試在您的環境變量中添加反斜杠。
最后,在安裝過程中沒有修復任何這些的秘密選項:)
使用此處找到的定義: http : //www.cmake.org/cmake/help/v3.1/module/FindOpenCL.html
嘗試以下操作(我在 Windows 10 Pro 和 Ubuntu 14.04LTS 上進行了快速測試):
FIND_PACKAGE(OpenCL REQUIRED)
INCLUDE_DIRECTORIES(${OpenCL_INCLUDE_DIRS})
LINK_DIRECTORIES(${OpenCL_LIBRARY})
您可能還想檢查: 如何在 CMake 文件中添加頭文件路徑
您可以使用附加的-D
選項運行cmake
,例如:
cmake [some_your_options] -DOpenCL_LIBRARY=/cygdrive/c/cuda/lib -DOpenCL_INCLUDE_DIR=/cygdrive/c/cuda/include [some_your_other_options] .....
所以它會看到 OpenCL 這種手動指定的路徑。
上例為我的CygWin64提供,其中在文件夾C:\\cygdrive
我之前通過mklink
添加了幾個符號鏈接,用於所有需要的邏輯驅動器,因此"c"
鏈接到"C:\\"
, "d"
鏈接到"D:\\"
等等。
我的 NVidia CUDA 安裝路徑實際上是C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v10.0\\
,但它不是很方便,所以我還在C:
上制作了符號鏈接( mklink /D linkname "path"
) “cuda”,所以/cygdrive/c/cuda/lib
實際上指向C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v10.0\\lib
。
在 Windows 上模擬 Unix 環境並在命令提示符中編譯非常棘手,是的..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.