gongshijun / cmake_build_cxx

using cmake build a big project. The project contain nultilevel directory and resource files. This project contain two ways to build project. One, build all project from sources. Two, build all project from objects. if there is any mistake, please give me your advice. 这个项目,主要记录本人这四天来学习cmake构建系统的经历。 项目需求,一个大型工程,工程需要包括多级目录结构,需要有主程序以及单元测试,以及一些资源文件用来进行项目配置。除此之外,单元测试和主程序之间,构成可选项。也就是说,要么进行单元测试,要么运行主程序。 另外,处于个人爱好,比较喜欢在vs中开发代码,因此需要在vs显示的构建虚拟工程目录。 需要说明的一点:由于大型工程,不同目录之间存在相互引用,以及引用顺序不一致的情况,因此,本工程提供了两种构建方式。第一,源文件构建,将所有源文件,放在一起进行构建,这样可以方便在vs一个工程中,进行查看与调试。第二, 目标文件构建,先将不同目录下的源文件,生成对应的目标文件,再进行构建。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CMAKE BUILD CXX

CMake是管理C ++系统构建的好​​工具。它构建迅速,支持主要用例,并且非常灵活。问题是,它太灵活了,对于习惯于自己编写Makefile的人们来说,并不总是很明显应该使用什么CMake命令和属性。如果习惯于仅将一些编译器标志放入CXX_FLAGS环境变量中,即使它支持更好的管理构建方式,您也可能会在CMake中这样做。

本项目记录本人学习CMAKE的一些经验,目前总共分配两个工程:

cmake_makefile 类似于Makefile文件编写式风格,导致自己的项目很难移植,也不方便在不同的上下文中重用,但是限于本人一开始喜欢在vs中开发调试代码,因此该项目可能非常适合开发初期且喜欢用vs调试的开发人员。

cmake_target 再经过一段时间学习之后,特别是看了大公司的开源代码,感觉之前的项目是在存在很多缺陷,如不支持自动安装库(需要手动拷贝头文件),以及不支持find_package等现代cmake式的命令(影响库移植)等等。因此,该项目将记录如何基于cmake的target来编程实现build cxx系统来方便的完成开发等。

主要参考:

https://rix0r.nl/blog/2015/08/13/cmake-guide/

https://cliutils.gitlab.io/modern-cmake/

详细介绍

在每个项目项目下面,都有详细的文档介绍,可以自行参考。

About

using cmake build a big project. The project contain nultilevel directory and resource files. This project contain two ways to build project. One, build all project from sources. Two, build all project from objects. if there is any mistake, please give me your advice. 这个项目,主要记录本人这四天来学习cmake构建系统的经历。 项目需求,一个大型工程,工程需要包括多级目录结构,需要有主程序以及单元测试,以及一些资源文件用来进行项目配置。除此之外,单元测试和主程序之间,构成可选项。也就是说,要么进行单元测试,要么运行主程序。 另外,处于个人爱好,比较喜欢在vs中开发代码,因此需要在vs显示的构建虚拟工程目录。 需要说明的一点:由于大型工程,不同目录之间存在相互引用,以及引用顺序不一致的情况,因此,本工程提供了两种构建方式。第一,源文件构建,将所有源文件,放在一起进行构建,这样可以方便在vs一个工程中,进行查看与调试。第二, 目标文件构建,先将不同目录下的源文件,生成对应的目标文件,再进行构建。

License:Apache License 2.0


Languages

Language:CMake 57.2%Language:C++ 41.7%Language:C 0.7%Language:Batchfile 0.2%Language:Shell 0.1%