概述
kmcmake 是构建于 cmake 之上的cmake项目模版,用于项目构建系统一键生成。
原理
任何一个工作,都可以拆解为一条相关联的链路。编译过程也不例外。结合CMake的使用方式,
对构建项目和发布项目进行拆解,并在合适的位置,为用户留下自定义的方式。cmake 构建工程
分为三个步骤:
- cmake配置阶段
- 编译阶段
- 安装以及运行阶段
[2]和[3]阶段的行为都是基于[1]生成的配置文件。下面我们重点分析步骤1的过程。
如下图:
经过抽象,kmcmake将模型精简为
kmcmake的执行顺序:
include(kmcmake_module)
##################################################################
#
# your cmake directory ${PROJECT_SOURCE_DIR}/cmake, do things here
#################################################################
include(abc_deps)
include(abc_cxx_config)
include(abc_test)
string(TOUPPER ${CMAKE_BUILD_TYPE} UPPERCASE_BUILD_TYPE)
configure_file(${PROJECT_SOURCE_DIR}/abc/version.h.in ${PROJECT_SOURCE_DIR}/abc/version.h @ONLY)
add_subdirectory(abc)
####################################################################
# belows are auto, edit it be cation
####################################################################
if (KMCMAKE_BUILD_TEST)
add_subdirectory(tests)
endif ()
if (KMCMAKE_BUILD_BENCHMARK)
add_subdirectory(benchmark)
endif ()
if (KMCMAKE_BUILD_EXAMPLES)
add_subdirectory(examples)
endif ()
使用步骤
-
kmcmake 生成项目。
-
配置OPTION项, kmcmake_module 包含了
kmcmake通用的OPTION项。用户的自定义的OPTION应该在include(kmcmake_module)和include(abc_deps)之间。此操作对应上图中的1。 -
用户定义依赖项,依赖的文件在
cmake/${project_name}_deps.cmake中,详见配置依赖项目文档 -
定义导出对象,配置
cmake/${project_name}_config.cmake.in, 详见配置导出对象文档 -
定义生成项,该配置是生成库或者二进制的cmake,在
${project_name}/CMakeLists.txt中配置,详见构建库, 可执行程序。 -
定义测试, 配置测试的编译和运行,详见编译测试文档。
-
定义用例,也称为
examples,在examples目录中配置,参见可执行程序文档。 -
使用kmpkg管理项目依赖,参阅cmake集成
4,6,7, 三步骤可以先省略,完成1-5和步骤8步骤,项目即可编译运行。相比于从头开始编写cmake文件,此过程将帮您节省95%以上的代码和时间。
温馨提示,1-5和步骤8建议在编写代码前就完成,这样你的编辑器IDE能够帮提示代码,提高写代码的效率。并延长你键盘的使用寿命。
步骤4可以最后再完成配置。