CUDA、Boost 和 Cmake “字符串子命令 REGEX,模式 MATCHALL 需要至少 5 个参数来命令。”

Posted

技术标签:

【中文标题】CUDA、Boost 和 Cmake “字符串子命令 REGEX,模式 MATCHALL 需要至少 5 个参数来命令。”【英文标题】:CUDA, Boost and Cmake "string sub-command REGEX, mode MATCHALL needs at least 5 arguments total to command." 【发布时间】:2021-09-21 03:30:16 【问题描述】:

我想为我的应用程序使用 CUDA、Boost,但发现自己遇到了以下错误消息

$ cmake ..

CMake Error at /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake:5 (string):
  string sub-command REGEX, mode MATCHALL needs at least 5 arguments total to
  command.
Call Stack (most recent call first):
  /usr/lib/x86_64-linux-gnu/cmake/boost_program_options-1.71.0/boost_program_options-config.cmake:24 (include)
  /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake:117 (find_package)
  /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake:182 (boost_find_component)
  /home/long/.local/share/JetBrains/Toolbox/apps/CLion/ch-0/211.7442.42/bin/cmake/linux/share/cmake-3.19/Modules/FindBoost.cmake:460 (find_package)
  CMakeLists.txt:7 (find_package)


-- Boost toolset is unknown (compiler  )
-- Configuring incomplete, errors occurred!

我的 CMake 文件如下所示

cmake_minimum_required(VERSION 3.16)

project(chaotic_attractor CUDA)

set(CMAKE_CUDA_STANDARD 14)

find_package(Boost 1.71.0 REQUIRED COMPONENTS program_options)
include_directories($Boost_INCLUDE_DIRS)

add_executable(chaotic_attractor strangeattractor/main.cu)

target_link_libraries(chaotic_attractor $Boost_LIBRARIES)

set_target_properties(
        chaotic_attractor
        PROPERTIES
        CUDA_SEPARABLE_COMPILATION ON)

我不清楚 NVCC 和 Boost 是否可以相处。有谁知道如何解决这个问题?

【问题讨论】:

【参考方案1】:

在此处启用CXX 语言显然是 Boost 的一项要求。

cmake_minimum_required(VERSION 3.16)
project(chaotic_attractor LANGUAGES CXX CUDA)

set(CMAKE_CUDA_STANDARD 14)

...

【讨论】:

我编辑了您的答案以使用最佳实践。这里绝对不需要enable_language。在cmake_minimum_requiredproject 之间放置代码是一种严重 代码气味。

以上是关于CUDA、Boost 和 Cmake “字符串子命令 REGEX,模式 MATCHALL 需要至少 5 个参数来命令。”的主要内容,如果未能解决你的问题,请参考以下文章

CMake 和 Boost

cmake windows caffe cuda版本的切换

Boost.Python 和 CMake 链接和加载错误

构建 CMake 项目时无法打开 Boost 库

Cmake FindBoost错误-POP没有匹配PUSH

在 cmake 配置后的链接阶段不尊重 BOOST_ROOT