好处:
a) 跨平台(makefile跟平台强相关)
b) cmake可以自动生成makefile
编写CMakeLists.txt 文件
#关键主体:
cmake_minimum_required(VERSION 3.10) # 指定最低支持的 CMake 版本
project(FunMain VERSION 1.0) # 定义项目名称及版本号
# 添加可执行文件
add_executable(${PROJECT_NAME} ${SOURCES})
Makefile 转换为 CMakeLists.txt 文件
project(FunMain VERSION 1.0) # 定义项目名称及版本号
# 设置 C++ 标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_CXX_EXTENSIONS False)
# 获取所有 .cpp 文件
file(GLOB SOURCES "*.cpp")
# 添加可执行文件
add_executable(${PROJECT_NAME} ${SOURCES})
# 设置编译选项
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_FLAGS "-Wall")
# 清理规则
add_custom_target(clean_project
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_BINARY_DIR}/cmake_clean.cmake
COMMENT "Cleaning the project..."
)
# 彻底清理
add_custom_target(mrproper
DEPENDS clean
COMMAND rm -f *.d
COMMENT "Performing a thorough cleaning..."
)
# 重新构建
add_custom_target(rebuild
DEPENDS clean ${PROJECT_NAME}
COMMENT "Rebuilding the project..."
)
# 帮助信息
add_custom_command(
OUTPUT help_project
COMMAND echo "可用的目标:"
COMMAND echo " all - 构建程序 (默认)"
COMMAND echo " clean - 清除目标文件和可执行文件"
COMMAND echo " mrproper - 彻底清除,包括自动依赖文件"
COMMAND echo " rebuild - 重新构建所有内容"
COMMENT "Displaying help information..."
)
# 为 'make help' 提供目标
add_custom_target(show_help
DEPENDS show_help
COMMENT "Displaying help information..."
)
# 为 'make help' 提供别名
add_custom_target(help_project
DEPENDS show_help
COMMENT "Displaying help information (alias for show_help)"
)
# 设置 help 为目标的依赖
add_dependencies(help_project show_help)
使用命令cmake .系统会调用CMakeLists.txt文件生成makefile
使用code makefile命令调用vscode查看生成的makefile文件
二:创建build文件夹
目的:避免生成的临时文件和源文件混在一起
mkdir build
cd build
cmake ..(..代表上层目录)
make
最后会生成可执行文件