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_required
和project
之间放置代码是一种严重 代码气味。以上是关于CUDA、Boost 和 Cmake “字符串子命令 REGEX,模式 MATCHALL 需要至少 5 个参数来命令。”的主要内容,如果未能解决你的问题,请参考以下文章