小编Kri*_*lex的帖子

代码解析不适用于CUDA,Clion和CMake

我有一个项目分为模块,这是一个虚拟的例子:

    • 的CMakeLists.txt
    • 模块
      • utils的
        • 的CMakeLists.txt
        • SRC
          • util_file.cpp
      • CUDA
        • 的CMakeLists.txt
        • SRC
          • cuda_file.cu

如果我用CLion编辑cuda_file.cu,CLion将解析所有符号(甚至是标准库中的包含).然后,所有代码完成/创建功能都会消失(除此之外).问题似乎是,无论何时只使用CUDA文件创建库或可执行文件,Clion都会变得愚蠢,并且不再解析或解析任何内容.

我找到了两种解决方法,但它们不友好或"干净"使用:

  • 将空的.cpp文件添加到目录并将其添加到add_library()CMake行.
  • 切换到另一个具有.cpp文件的库或可执行目标(如我的虚拟示例中的utils).但是当你想要编译或执行时,你必须再次切换到cuda目标(或测试单元的某个子目标,如test_cuda),然后再切换回来继续编码或调试等...

这是来自cuda模块的CMakeLists.txt,其解决方法如下:

cmake_minimum_required(VERSION 3.5)
message(STATUS "Configuring module cuda")

# Build module static library
FILE(GLOB CUDA_SRCS
    ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
FILE(GLOB CUDA_CU_SRCS
     ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cu)
FILE(GLOB CUDA_CU_HDRS
    ${CMAKE_CURRENT_SOURCE_DIR}/include/*.cuh)

cuda_compile(cuda_objs ${CUDA_CU_SRCS} ${CUDA_CU_HDRS})
add_library(cuda STATIC ${CUDA_SRCS} ${cuda_objs})
# because only .cu files, help cmake detect C++ language
set_target_properties(cuda PROPERTIES LINKER_LANGUAGE CXX)
Run Code Online (Sandbox Code Playgroud)

在解析到其他头文件和库的链接时,有没有办法避免CLion derping?

我已经在.cion选项中添加了.cu和.cuh文件作为C/C++代码,并尝试使用JETBRAINS_IDE定义选项,如另一篇类似的帖子所述,但这两个问题并不相同.

c++ cuda cmake clion

5
推荐指数
1
解决办法
2989
查看次数

标签 统计

c++ ×1

clion ×1

cmake ×1

cuda ×1