cmake项目基本demo
# 设置最低CMake版本要求
cmake_minimum_required(VERSION 3.10)# 项目名称和版本
project(MyProject VERSION 1.0.0)# 设置C++标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)# 设置编译器选项
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -O2")set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0")set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -DNDEBUG")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /O2")
endif()# 设置输出目录
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)# 包含头文件目录
include_directories(${CMAKE_SOURCE_DIR}/include)# 收集源文件
file(GLOB_RECURSE SOURCES "${CMAKE_SOURCE_DIR}/src/*.cpp""${CMAKE_SOURCE_DIR}/src/*.c"
)file(GLOB_RECURSE HEADERS "${CMAKE_SOURCE_DIR}/include/*.h""${CMAKE_SOURCE_DIR}/include/*.hpp"
)# 创建可执行文件
add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS})# 链接目录(如果有外部库)
# link_directories(/usr/local/lib)# 链接库(如果需要)
# target_link_libraries(${PROJECT_NAME}
# pthread
# m
# )# 如果要创建静态库而不是可执行文件,使用以下命令替代add_executable
# add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS})# 如果要创建动态库
# add_library(${PROJECT_NAME} SHARED ${SOURCES} ${HEADERS})# 安装配置
install(TARGETS ${PROJECT_NAME}RUNTIME DESTINATION binLIBRARY DESTINATION libARCHIVE DESTINATION lib
)# 安装头文件
install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/DESTINATION includeFILES_MATCHING PATTERN "*.h" PATTERN "*.hpp"
)# 可选:启用测试
# enable_testing()
# add_subdirectory(tests)# 可选:添加子目录
# add_subdirectory(external)
# add_subdirectory(docs)
创建一个基础的CMakeLists.txt模板,适用于大部分C++项目:这个模板包含了C++项目的基本配置,主要功能:
核心配置:
- 设置CMake最低版本要求(3.10)
- 定义项目名称和版本
- 设置C++标准(C++17)
- 配置编译器选项和优化级别
推荐的项目目录结构:
MyProject/
├── CMakeLists.txt
├── include/ # 头文件
│ └── *.h, *.hpp
├── src/ # 源文件
│ └── *.cpp, *.c
├── build/ # 构建目录(手动创建)
├── tests/ # 测试文件(可选)
└── external/ # 第三方库(可选)
使用方法:
# 创建构建目录
mkdir build && cd build# 生成构建文件
cmake ..# 编译项目
make # Linux/Mac
# 或
cmake --build . # 跨平台# 运行程序
./bin/MyProject
常用修改:
- 修改
MyProject
为你的项目名 - 调整C++标准版本(11/14/17/20)
- 取消注释库链接部分添加依赖
- 根据需要选择生成可执行文件、静态库或动态库