# cucon **Repository Path**: graviton/cucon ## Basic Information - **Project Name**: cucon - **Description**: cuda cpp conan - **Primary Language**: C++ - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-28 - **Last Updated**: 2025-10-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CUCon - C++/CUDA 混合编程项目 本项目是一个基于 C++ 和 CUDA 的混合编程示例项目, 演示了如何在现代 CMake 项目中集成 CUDA 开发, 并使用 Conan 进行第三方库依赖管理. ## `__declspec(dllexport)`, `__attribute__((__visibility__("default")))` + 控制 动态库 符号导出的 头文件, 例如 `common_export.h`, 由 CMake 自动生成 + 统一放在 `export_headers/` 目录下面. ## 项目特点 - **C++/CUDA 混合编程**: 展示如何在同一项目中混合编写 C++ 和 CUDA 代码 - **跨平台支持**: 支持 Windows 和 Linux 平台 - **现代 CMake**: 使用现代 CMake (3.18+) 构建系统 - **Conan 依赖管理**: 使用 Conan 管理第三方库依赖 - **示例代码**: 包含设备信息检测, CUDA 自定义类型测试等示例 ## 环境要求 ### 通用依赖 - Conan 1.50+ 或 2.0+ - CMake 3.18 或更高版本 - Ninja 构建系统 tools CMake 和 ninja 也可以由 conan 自行拉取并build. ### Windows 平台 - Visual Studio 2022(MSVC 编译器) - NVIDIA CUDA Toolkit 11.0+(支持你的 GPU 架构) ### Linux 平台 - GCC 8 或更高版本(当前服务器为 CentOS 8.4.2105) - NVIDIA CUDA Toolkit 11.0+ ## 安装依赖 本项目使用 Conan 管理第三方库依赖. 在构建项目之前, 需要安装项目依赖: ```bash # 进入项目根目录 cd /path/to/cucon # 安装依赖(Windows Debug) conan install . --build=missing -pr ./ninja_cl_debug # 安装依赖(Windows Release) conan install . --build=missing -pr ./ninja_cl_release # 安装依赖(Linux Debug) conan install . --build=missing -pr ./gcc8_debug # 安装依赖(Linux Release) conan install . --build=missing -pr ./gcc8_release ``` ## 构建项目 ### Windows 平台(MSVC + Ninja) 打开 powershell ```bash #------------------ Debug 构建 # 假设已经按上述 conan 安装了 debug 依赖 # 激活 conan debug build 环境 . build/Debug/generators/conanbuild.ps1 cmake --preset conan-debug ninja -C build/Debug #------------------ Release 构建 . build/Release/generators/conanbuild.ps1 cmake --preset conan-release ninja -C build/Release cmake --preset conan-relwithdebinfo --log-level=VERBOSE ``` ### Linux 平台(GCC + Ninja) ```bash #------------------ Debug 构建 . build/Debug/generators/conanbuild.sh cmake --preset conan-debug ninja -C build/Debug #------------------ Release 构建 . build/Release/generators/conanbuild.sh cmake --preset conan-release ninja -C build/Release ``` ## 运行项目 构建完成后, 可执行文件将位于以下目录: - **Win/Linux**: `bin/Debug/` 或 `bin/Release/` 目录下(根据构建类型) 运行示例: ```bash # Windows cd bin/Debug .\cucon.exe # Linux cd bin/Debug # 或 cd bin/Release ./cucon ``` ## 项目结构 ``` cucon/ ├── cmake/ # CMake 模块和自定义脚本 ├── include/ # 头文件 ├── src/ # 源代码(.cpp 和 .cu 文件) ├── CMakeLists.txt # 主 CMake 构建文件 ├── conanfile.py # Conan 依赖配置文件 └── README.md # 项目说明文档 ``` ## 测试示例 项目包含以下测试示例: - **DeviceInfoTest**: 检测 CUDA 设备信息 - **TeAdd**: 简单的 CUDA 加法运算示例 - **CustomTypesTest**: 自定义 CUDA 数据类型(Vector3, Matrix4x4, ListNode)示例 ## 自定义构建配置 ### Conan 配置文件 项目提供了以下 Conan 配置文件(profile): - `gcc_debug`: Linux GCC Debug 构建配置 - `gcc_release`: Linux GCC Release 构建配置 - `cl_debug`: Windows MSVC Debug 构建配置 - `cl_release`: Windows MSVC Release 构建配置 你可以根据需要修改这些配置文件或创建新的配置文件. ### CMake 配置 CMake 相关配置位于 `cmake/` 目录下, 主要包括: - `mypath.cmake`: 设置输出目录, 安装路径等 - `mycuda.cmake`: CUDA 相关配置 - `myfind.cmake`: 查找第三方库 ## 注意事项 1. 确保已正确安装 NVIDIA CUDA Toolkit 并配置好环境变量 2. 在 Linux 平台上, 确保 GCC 版本与 CUDA Toolkit 版本兼容 3. 如果遇到构建问题, 可尝试删除构建目录并重新执行安装和构建命令 4. 项目使用 spdlog 和 fmt 库进行日志和格式化输出 ## License [在此添加许可证信息]