1 Star 0 Fork 1

张业军/CMake工程模版

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
CMakeLists.txt 2.86 KB
一键复制 编辑 原始数据 按行查看 历史
cmake_minimum_required(VERSION 3.20.0)
project(TemplateDemo)
#*******************************************************
# 初始化设置环境变量
#
# @CMAKE_PREFIX_PATH: 设置 find_package 的搜索路径
# @CMAKE_MODULE_PATH: 设置 include 的搜索路径
#*******************************************************
set(ENV{CMAKE_PREFIX_PATH} ${CMAKE_CURRENT_SOURCE_DIR})
set(ENV{CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR})
#*******************************************************
# 配置编译选项
#
# @template_compiler_flags: 编译选项
# @release_compiler_flags: 配置 release 版本
# @debug_compiler_flags: 配置 debug 版本
#*******************************************************
add_library(template_compiler_flags INTERFACE)
# 设置通用的编译特性/选项
target_compile_features(template_compiler_flags INTERFACE cxx_std_17) # 取值参考 CMAKE_CXX_KNOWN_FEATURES
target_compile_features(template_compiler_flags INTERFACE c_std_99) # 取值参考 CMAKE_C_KNOWN_FEATURES
# 取值参考 https://gcc.gnu.org/onlinedocs/gcc/Invoking-GCC.html
# 也可以参考文章:https://www.cnblogs.com/blizzard8204/p/17519125.html
target_compile_options(template_compiler_flags INTERFACE -Wall -Wextra) # 设置警告选项
# 关于 Debug 和 Release 的配置可以参考:
# https://cmake.org/cmake/help/latest/guide/tutorial/Packaging%20Debug%20and%20Release.html#guide:tutorial/Packaging%20Debug%20and%20Release
if (CMAKE_BUILD_TYPE STRLESS_EQUAL "Release")
add_library(release_compiler_flags INTERFACE)
target_compile_options(release_compiler_flags INTERFACE -O2) # 开启 -O2 优化
target_link_options(template_compiler_flags INTERFACE debug_compiler_flags)
elseif ((CMAKE_BUILD_TYPE STRLESS_EQUAL "Debug"))
add_library(debug_compiler_flags INTERFACE)
target_compile_options(debug_compiler_flags INTERFACE -O0 -g) # 禁止优化,并开始调试模式
target_link_options(template_compiler_flags INTERFACE debug_compiler_flags)
endif()
#*******************************************************
# 配置交叉编译工具链
#
# @template_compiler_flags: 编译选项
# @release_compiler_flags: 配置 release 版本
# @debug_compiler_flags: 配置 debug 版本
#*******************************************************
#*******************************************************
# 包含子目录模块
#*******************************************************
add_subdirectory(third_party)
add_subdirectory(modules)
#*******************************************************
# 打印出 CMAKE_PREFIX_PATH、CMAKE_MODULE_PATH
# 中设置的包含路径
#*******************************************************
# message("find_path path:")
# foreach(item IN ITEMS $ENV{CMAKE_PREFIX_PATH})
# message("- ${item}")
# endforeach()
# message("include path:")
# foreach(item IN ITEMS $ENV{CMAKE_MODULE_PATH})
# message("- ${item}")
# endforeach()
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/zhang-yejun/cmake_project_template.git
git@gitee.com:zhang-yejun/cmake_project_template.git
zhang-yejun
cmake_project_template
CMake工程模版
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385