cmake找不到文件,除非我给它确切的路径

时间:2017-03-16 22:47:27

标签: boost cmake

好的,我正在玩提升并想要openCL。下载了包裹,我在这里:

 /root/boost_1_63_0/libs/compute

当我做“cmake”时。它告诉我它找不到openCL。

[root@172-1-8-3 compute]# cmake . -DOpenCL_INCPATH=/opt/nvidia/cuda/include
DEBUG OpenCL_INCPATH=/opt/nvidia/cuda/include
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:108 (message):
  Could NOT find OpenCL (missing: OpenCL_INCLUDE_DIRS)
Call Stack (most recent call first):
  /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:315 (_FPHSA_FAILURE_MESSAGE)
  cmake/opencl/FindOpenCL.cmake:76 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  CMakeLists.txt:20 (find_package)

我添加了调试行以确保我的变量实际上已经设置好了。 我可以添加到行的路径

FIND_PATH(OpenCL_INCLUDE_DIRS CL/cl.h PATHS  "$ENV{CUDADIR}/include" ${_OpenCL_INC_CAND} "/usr/local/cuda/include" "/opt/cuda/include" "/opt/AMDAPP/include" ENV OpenCL_INCPATH)

如果我在PATHS之后添加“/ opt / nvidia / cuda / include”,那么它很高兴找到OpenCL。但是,肯定它应该从“ENV ...”位找到它。如果我需要使用确切的位置来破解源代码,那么我可能也没有构建工具。

我尝试了/没有终止/在路径上。我知道我可能不应该在这里这样做,但似乎我可以让它工作,然后正常的构建将正常工作。我实际上想要用GPU支持来构建cpp-ethereum。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

如果要从命令行手动指定include dir,那么您需要做的只是传递

-DOpenCL_INCLUDE_DIRS=/opt/nvidia/cuda/include

命令行上的cmake参数。这将覆盖find_path的结果。

如果您尝试让CMake读取环境变量,则其语法为

$ENV{NAME_OF_ENVIRONMENT_VARIABLE}