c++ cmakelist
时间: 2023-11-21 21:06:56 浏览: 87
CMake是一个跨平台的自动化构建系统,可以用于管理C++项目的构建过程。CMakeLists.txt是CMake的配置文件,其中包含了项目的编译选项、依赖库、源文件等信息。通过编写CMakeLists.txt文件,可以方便地生成Makefile或Visual Studio等IDE所需的工程文件,从而实现项目的编译和构建。在C++项目中,使用CMake可以方便地管理和构建项目,同时也可以方便地添加和管理依赖库。
相关问题
c++ cmakelist cuda
下面是一个示例 CMakeLists.txt 文件,用于编译包含 CUDA 代码的 C++ 项目:
```
cmake_minimum_required(VERSION 3.8)
project(MyProject)
# 设置 C++ 标准
set(CMAKE_CXX_STANDARD 11)
# 查找 CUDA 库和头文件
find_package(CUDA REQUIRED)
include_directories(${CUDA_INCLUDE_DIRS})
# 添加可执行文件
add_executable(MyProject main.cpp cuda_code.cu)
# 设置 CUDA 架构和选项
set(CUDA_NVCC_FLAGS "-arch=sm_30" "--use_fast_math")
# 链接 CUDA 库
target_link_libraries(MyProject ${CUDA_LIBRARIES})
```
其中,`find_package(CUDA REQUIRED)` 用于查找 CUDA 库和头文件,`include_directories(${CUDA_INCLUDE_DIRS})` 用于将 CUDA 头文件目录添加到编译器搜索路径中,`add_executable(MyProject main.cpp cuda_code.cu)` 用于添加可执行文件,`set(CUDA_NVCC_FLAGS "-arch=sm_30" "--use_fast_math")` 用于设置 CUDA 架构和编译选项,`target_link_libraries(MyProject ${CUDA_LIBRARIES})` 用于链接 CUDA 库。
在编译时,可以使用以下命令:
```
mkdir build
cd build
cmake ..
make
```
其中,`cmake ..` 用于生成 Makefile,`make` 用于编译项目。
一个简单的c++ cmakelist.txt
CMakeLists.txt是CMake构建系统中的关键文件,它定义了如何配置、编译和链接项目。对于一个简单的C++项目,CMakeLists.txt的基本结构通常包含以下几个部分:
1. **项目名称声明**:
```cmake
cmake_minimum_required(VERSION 3.0)
project(MyProject CXX)
```
这里指定了项目的名称和使用的语言(CXX代表C++11及以上版本)。
2. **添加源文件目录**:
```cmake
set(SOURCES
src/main.cpp
src/class1.cpp
src/class2.cpp
# 更多源文件...
)
```
这里列举所有需要编译的源代码文件。
3. **指定目标库或可执行文件**:
```cmake
add_executable(${PROJECT_NAME} ${SOURCES})
```
`add_executable`命令创建了一个名为`MyProject`的可执行文件,并将源文件链接在一起。
4. **选择构建工具**(如GCC或Clang):
```cmake
if(NOT CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
message(FATAL_ERROR "This project only supports GCC.")
endif()
```
这里检查是否使用了GCC,如果不是则报错。
5. **自定义选项和配置**:
```cmake
option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
```
可以添加一些选项供用户在构建时选择。
完整的简单示例可能看起来像这样:
```cmake
cmake_minimum_required(VERSION 3.0)
project(MyProject CXX)
set(SOURCES
src/main.cpp
src/class1.cpp
src/class2.cpp
)
add_executable(${PROJECT_NAME} ${SOURCES})
# 如果不是GCC,则报错
if(NOT CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
message(FATAL_ERROR "This project only supports GCC.")
endif()
option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
# 添加其他配置或依赖项...
```
阅读全文