找不到OpenCL(缺少:OpenCL_LIBRARY)

时间:2016-05-08 13:29:40

标签: cmake opencl

我正在尝试将OpenCL与CLion(特别是boost compute)一起使用,使用CMake,在Windows 10上使用nvidia gpu。感觉就像我已经尝试了一切,但我不知道CMake是如何工作的,我无法在网上找到足够基本的帖子供我理解。官方文档对初学者也没有帮助。我还需要最终在OS X和某些Linux上运行它。

这就是我所处的混乱(CmakeLists.txt):

cmake_minimum_required(VERSION 3.3)
project(cpl)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O2")

set(SOURCE_FILES
        src/planner/main.cpp)

set(BOOST_ROOT C:/boost)
set(BOOSTROOT C:/boost)

include_directories(lib/compute/include)

include_directories($ENV{CUDA_PATH})

# boost
set(Boost_USE_STATIC_LIBS OFF)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
find_package(Boost 1.60.0 REQUIRED)

# opencl
set(CMAKE_MODULE_PATH lib/cmake)

find_package(OpenCL REQUIRED)

INCLUDE_DIRECTORIES(${OpenCL_INCLUDE_DIRS})

LINK_DIRECTORIES(${OpenCL_LIBRARY})

message(STATUS "OpenCL found: ${OPENCL_FOUND}")
message(STATUS "OpenCL includes: ${OPENCL_INCLUDE_DIRS}")
message(STATUS "OpenCL CXX includes: ${OPENCL_HAS_CPP_BINDINGS}")
message(STATUS "OpenCL libraries: ${OPENCL_LIBRARIES}")

#target_link_libraries(cpl OpenCL)

这就是我得到的错误:

C:\Users\drathier\.CLion2016.1\system\cygwin_cmake\bin\cmake.exe --build C:\Users\drathier\.CLion2016.1\system\cmake\generated\cpl-bfc654e8\bfc654e8\Debug --target all -- -j 8
-- Boost version: 1.60.0
CMake Error at /cygdrive/c/Users/drathier/.CLion2016.1/system/cygwin_cmake/share/cmake-3.5.1/Modules/FindPackageHandleStandardArgs.cmake:148 (message):
  Could NOT find OpenCL (missing: OpenCL_LIBRARY)
Call Stack (most recent call first):
  /cygdrive/c/Users/drathier/.CLion2016.1/system/cygwin_cmake/share/cmake-3.5.1/Modules/FindPackageHandleStandardArgs.cmake:388 (_FPHSA_FAILURE_MESSAGE)
  /cygdrive/c/Users/drathier/.CLion2016.1/system/cygwin_cmake/share/cmake-3.5.1/Modules/FindOpenCL.cmake:128 (find_package_handle_standard_args)
  CMakeLists.txt:22 (find_package)

CMakeOutput.log:http://pastebin.com/EgGyRk9H

1 个答案:

答案 0 :(得分:0)

如果table使用的FindOpenCL CMake模块找不到您的OpenCL安装,则可以使用以下CMake参数覆盖它

find_package

还可以通过-DOpenCL_FOUND=True -DOpenCL_LIBRARY=<PUT_LIBRARY_PATH_HERE> 手动设置包含路径,请参见documentation


OpenCL_INCLUDE_DIR模块(请参见source,在您的版本中可能看起来有所不同)检查了许多事情以识别一些OpenCL SDK,例如OpenCL安装导出的典型环境变量:

FindOpenCL

您可以检查其中至少有一个是否以正确的路径导出,如果您自己没有设置,则可以避免上述手动覆盖。您的 ENV "PROGRAMFILES(X86)" ENV AMDAPPSDKROOT ENV INTELOCLSDKROOT ENV CUDA_PATH ENV NVSDKCOMPUTE_ROOT ENV ATISTREAMSDKROOT ENV OCL_ROOT 表示应设置CMakeLists.txt,因此请先检查该值。调试的另一条途径可能是向FindOpenCL模块添加一些输出。

希望有帮助,祝你好运。