天天看点

linux下cmake编译C++工程之总结篇

昨天正式把项目编译完成,经历了一周的摸索和折磨后,最后也想:oh,it‘s so easy!

但是过程确实困难的,因为cmake官方只有api的解释,而且解释的不是很清楚。

一般项目都是狠复杂的层级关系

linux下cmake编译C++工程之总结篇

这种如何来写cmake呢?

首先要知道一个很重要的东西,cmake是一定要从顶级目录开始,才能继承目录,比如直接在project1目录里用../lib是无效的,因为cmake并不知道;

而如果在project下建立cmakelists.txt 然后add_subdir(project1),project1里就可以这么用了。

现在就写一下简单的实现:

首先是project下的cmakelists.txt:

add_subdirectory这句会自动迭代搜索project1下的cmakelists.txt并解析执行。所以需要在project1下也建立cmakelists.txt:

需要包含什么目录就写 include_directories,如果需要依赖lib就需要写 target_link_libraries。另外就是用了父cmake预定义的一些变量,这样就可以很容易地更改配置。

然后再project目录下 执行cmake .

make

就可以生成project1.exe了。

继续阅读