CMAKE配置CUDA

📅 2026/6/16 17:17:26
CMAKE配置CUDA
cmake_minimum_required(VERSION 3.8) # 或更低版本 cmake_policy(SET CMP0091 NEW) # 旧FindCUDA专属全局给nvcc加CRT参数覆盖默认MT if(MSVC) set(CUDA_NVCC_FLAGS_RELEASE ${CUDA_NVCC_FLAGS_RELEASE} -Xcompiler/MD) set(CUDA_NVCC_FLAGS_DEBUG ${CUDA_NVCC_FLAGS_DEBUG} -Xcompiler/MDd) # 禁用nvcc自带静态CRT默认行为 set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -Xcompiler-Zc:threadSafeInit-) endif() # # # 设置CUDA路径 可以来切换版本 set(CUDA_TOOLKIT_ROOT_DIR ${PROJECT_SOURCE_DIR}/RelayFile/cuda11.8) #set(CUDA_TOOLKIT_ROOT_DIR C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.2) # 查找CUDA find_package(CUDA REQUIRED) message(STATUS CUDA_FOUND: ${CUDA_FOUND}) message(STATUS CUDA_VERSION: ${CUDA_VERSION}) message(STATUS CUDA_INCLUDE_DIRS: ${CUDA_INCLUDE_DIRS}) message(STATUS CUDA_LIBRARIES: ${CUDA_LIBRARIES}) message(STATUS CUDA_TOOLKIT_ROOT_DIR: ${CUDA_TOOLKIT_ROOT_DIR}) message(STATUS CUDA_NVCC_EXECUTABLE: ${CUDA_NVCC_EXECUTABLE}) set(CUDA_LIB_DIR ${CUDA_TOOLKIT_ROOT_DIR}/lib/x64) message(STATUS CUDA真实库目录: ${CUDA_LIB_DIR}) cuda_add_library(${MODULE_NAME} SHARED ${gemfield_src_list} ${gemfield_private_header_list} ${gemfield_public_header_list} ${MODULE_VERSIONINFO_RC}) set_property(TARGET ${MODULE_NAME} PROPERTY CUDA_ARCHITECTURES native) target_link_libraries(${MODULE_NAME} ${CUDA_LIB_DIR}/nvml.lib)# # 设置CUDA路径 可以来切换版本 set(CUDA_TOOLKIT_ROOT_DIR C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.2) # 查找CUDA find_package(CUDA REQUIRED) message(STATUS CUDA_FOUND: ${CUDA_FOUND}) message(STATUS CUDA_VERSION: ${CUDA_VERSION}) message(STATUS CUDA_INCLUDE_DIRS: ${CUDA_INCLUDE_DIRS}) message(STATUS CUDA_LIBRARIES: ${CUDA_LIBRARIES}) message(STATUS CUDA_TOOLKIT_ROOT_DIR: ${CUDA_TOOLKIT_ROOT_DIR}) message(STATUS CUDA_NVCC_EXECUTABLE: ${CUDA_NVCC_EXECUTABLE}) # 添加可执行文件 cuda_add_executable(${Demo_NAME} ${gemfield_src_list} ${gemfield_header_list} main.cu) set_property(TARGET ${Demo_NAME} PROPERTY CUDA_ARCHITECTURES native) # 添加头文件路径 include_directories(${CUDA_INCLUDE_DIRS}) # 添加库文件路径 link_directories(${CUDA_TOOLKIT_ROOT_DIR}/lib) target_link_libraries(${Demo_NAME} ${CUDA_LIBRARIES}) # # 链接CUDA运行时库 # target_link_libraries(${Demo_NAME} ${CUDA_cudart_LIBRARY}) # -------------------------------------------------------- # 另一种写法可以正常编译运行 # cmake_minimum_required(VERSION 3.10) # project(YourCUDAProject LANGUAGES CXX) # # 如果存在多个版本设置版本 # # 这个功能不行设置之后虽然cmake的源文件打印时正确的但是 vcproject # # 实际上还是不变依然是Import Project$(VCTargetsPath)\BuildCustomizations\CUDA 10.2.targets / # # 如果环境变量时10.2但也安装注册过12.2。如果想用一个则要把C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\BuildCustomizations中另一个删掉 # # set(CMAKE_VS_PLATFORM_TOOLSET_CUDA 12.2) # # set(CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.2) # # set(CMAKE_VS_PLATFORM_TOOLSET_CUDA 12.2) # # # set(CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR E:/cuda_cmake_demo/cuda_dependencies/) # # set(CUDA_TOOLKIT_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/cuda_dependencies) # enable_language(CUDA) # add_executable(${Demo_NAME} main.cu) # set_property(TARGET ${Demo_NAME} PROPERTY CUDA_ARCHITECTURES native) # message(^^^^^^^^^^^^^^^^^^^^^^^^CMAKE_VS_PLATFORM_TOOLSET_CUDA: ${CMAKE_VS_PLATFORM_TOOLSET_CUDA}) # message(^^^^^^^^^^^^^^^^^^^^^^^^CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR: ${CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR}) # ------------------------------------------------------