我需要一个与定义环境变量的Makefile行等效的CMakeLists.txt

8xiog9wr  于 2023-01-30  发布在  其他
关注(0)|答案(1)|浏览(140)

我有一个包含以下代码的Makefile,它搜索本地CUDA工具文件夹的根目录,并填充一个环境变量供以后使用。在我的系统上,它现在生成“/usr/local/cuda-11.4”,用于查找标题和其他内容。

# Location of the CUDA Toolkit
CUDA_PATH = $(subst /bin/,,$(dir $(shell which nvcc)))

我内心的愿望是将其复制到我正在构建的CMakeLists.txt文件中,我希望在变量(或其他东西!)中获得相同的信息,然后能够将其填充到路径名中,等等。
我该怎么做呢?我用过add_definitions()的简单方法。

1aaf6o9v

1aaf6o9v1#

代码的直接转换就是使用find_program而不是which

find_program(NVCC_EXECUTABLE nvcc HINT ENV PATH NO_DEFAULT_PATH)

使用PARENT_PATH代替dircmake_path

cmake_path(GET ${NVCC_EXECUTABLE} PARENT_PATH CUDA_BIN_PATH)

以及用REPLACE代替subst

string(REPLACE /bin/ "" CUDA_PATH ${CUDA_BIN_PATH})

不过,您可以使用CMake内置的CUDA支持:

find_package(CUDAToolkit REQUIRED)
set(CUDA_PATH ${CUDAToolkit_LIBRARY_ROOT})

相关问题