Cmake 混合编译c++和Cuda(cuda7.5 vs2010)
Cmake 混合编译c++和Cuda(cuda7.5 + vs2010)2024年9月20日13:
·
Cmake 混合编译c++和Cuda(cuda7.5 + vs2010)
2024年9月20日13:45:40
- Cmake版本3.23.4
- VS2010的编译器、连接器
- CUDa 7.5
CmakeList.txt文件必须这样写:
cmake_minimum_required(VERSION 3.10)
# 项目信息
project(projectname LANGUAGES CXX CUDA)
set(CMAKE_CXX_FLAGS_RELEASE "/Zi /Od") # 设置 C++ 编译器标志
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/DEBUG /OPT:REF /OPT:ICF /NODEFAULTLIB:libcpmt.lib /NODEFAULTLIB:LIBCMT.lib") # 设置链接器标志
set(CMAKE_CXX_STANDARD 11) # 设置C++标准
set(CMAKE_CXX_STANDARD_REQUIRED True)
link_directories(
"${}/bin"
"${}/lib/"
)
# 包含目录
include_directories(
"."
"C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/include"
"C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v7.5/include"
"..."
)
# 源文件
set(SOURCES
main.cpp
"..."
)
# CUDA 源文件
set(CUDA_SOURCES
../xxx.cu
../xxx.cuh
../xxx.cu
../xxx.cuh
)
# 添加可执行文件
add_executable(${PROJECT_NAME} ${SOURCES} ${CUDA_SOURCES})
# 链接库
target_link_libraries(${PROJECT_NAME} cudart kernel32 user32 xxx ...)
# 设置编译选项
target_compile_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Debug>:-DWIN64 -D_DEBUG>
$<$<CONFIG:Release>:-DWIN64 -DNDEBUG>
)
## 设置链接选项,注释掉依旧可以正常出图
target_link_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Debug>:-generate-debug-information>
$<$<CONFIG:Release>:-generate-debug-information -enable-comdat-folding -optimize-references>
)
# CUDA 编译选项 把这个注释掉,核函数就进不去了 非常重要,不要用 find_package(cuda),而要用这个!!!
set_target_properties(${PROJECT_NAME} PROPERTIES
CUDA_ARCHITECTURES "35"
)
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE "${URT_EXE_OUTPUT}")
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG "${URT_EXE_OUTPUT}")
Cmake的命令行参数必须这样写
-DCMAKE_WARN_VS10=OFF -DCMAKE_GENERATOR_PLATFORM=x64
ToolChain必须这样配置
以上的cmake配置 可以顺利地 进行混合编译C++ 和Cuda!
更多推荐
所有评论(0)