我试图在windows 10上使用OpenCL和CLion (特别是boost计算),在windows 10上使用CMake和nvidia gpu。感觉好像我什么都试过了,但我不知道CMake是如何工作的,我在网上找不到一个基本的帖子,让我无法理解。官方文档对初学者也没有那么大的帮助。我还需要最终在OS和一些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
发布于 2019-07-17 22:44:47
在FindOpenCL CMake模块无法找到OpenCL安装的情况下,可以使用以下参数覆盖CMake
-DOpenCL_FOUND=True -DOpenCL_LIBRARY=<PUT_LIBRARY_PATH_HERE>还可以通过OpenCL_INCLUDE_DIR手动设置包含路径,请参阅文档。
FindOpenCL模块(请参阅来源,在您的版本中可能看起来不同)检查了许多东西以识别一些OpenCL SDK,例如,由OpenCL安装导出的典型环境变量:
ENV "PROGRAMFILES(X86)"
ENV AMDAPPSDKROOT
ENV INTELOCLSDKROOT
ENV CUDA_PATH
ENV NVSDKCOMPUTE_ROOT
ENV ATISTREAMSDKROOT
ENV OCL_ROOT您可以检查是否至少使用正确的路径导出其中的on,如果没有自己设置路径,则可以避免上述手动覆盖。您的CMakeLists.txt指示应该设置CUDA_PATH,所以可能首先检查该值。调试的另一条途径可能是向FindOpenCL模块添加一些输出。
希望这会有所帮助&祝你好运。
https://stackoverflow.com/questions/37100374
复制相似问题