You are on page 1of 5

使用CMake构建复杂工程

本文中所有代码:https://git.coding.net/autophyte/soTest.git

0. 什么是CMake

  CMake是一个跨平台的编译、安装、测试以及打包工具;CMake不直接编译软件,而是结合原生构建系统
来构建软件。CMake配置文件是CMakeList.txt文件(每个源码文件夹下都要有一个),CMake根据配置文件
在生成Unix的Makefile或VS的solution文件等。

1. 为什么选CMake

  别人为什么选CMake我不清楚,我是因为在Linux上直接写Makefile太痛苦,而项目又会跨平台,
Windows和Linux都要有

2. 用一个简单工程来说明CMake用法。

工程名soTest,里面包含一个两个so(dll)文件:so1和so2,以及一个测试工程st

工程内文件结构如下:
文件so1/so1.c:用于生成libso1.so

文件so2/so2.c:用于生成libso2.so,依赖于libso1.so,会调用libso1.so内函数

文件test/test.c:生成可执行文件,调用libso2.so,调用libso2.so内函数

文件test/test.py:使用python调用libso2.so函数

build目录用于存放编译时和种文件,这样可以保持源代码文件夹干净

文件结构
可以看,每个目录下都有一个CMakeList.txt的文件,这些文件就是CMake的配置文件,CMake就是
根据这些文件来生成其他构建文件的

3. 项目代码如下:

  

1 // so1/so1.c
2 int add_fun(int a, int b)
3 {
4 return a+b;
5 }

按 Ctrl+C 复制代码

按 Ctrl+C 复制代码

按 Ctrl+C 复制代码

按 Ctrl+C 复制代码

按 Ctrl+C 复制代码
按 Ctrl+C 复制代码

按 Ctrl+C 复制代码

按 Ctrl+C 复制代码

按 Ctrl+C 复制代码

按 Ctrl+C 复制代码

按 Ctrl+C 复制代码
按 Ctrl+C 复制代码

1 project(soTest)
2 set(st test.c)
3
4 # 生成可执行文件
5 add_executable(st test.c)
6 target_link_libraries(st so2 so1)

4. CMake支持在源文件目录外进行构建,这里我们选择在./build目录下进行构建,好处是不会把源文件目录污
染,在build目录下运行命令(命令后参数是总CMakeLists.txt文件所在目录):

cmake .. && make && ./libs/st

  命令运行后结果如下
  

分类: C/C++ , CMake

好文要顶 关注我 收藏该文

百草神农
关注 - 0 0 0
粉丝 - 1
+加关注

» 下一篇:Ubuntu上面安装Mongo

posted @ 2016-12-09 00:41 百草神农 阅读(3637) 评论(0) 编辑 收藏

You might also like