- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Cmake的介绍和使用 Cmake实践
Cmake优点:
1.???????开发源代码,实用类BSD许可发布。
2.???????跨平台,并可以生成native编译配置文件,在linux/unix平台,生成makefile,在mac平台可以生成xcode,在windows平台可以生成msvc工程的配置文件。
3.???????能够管理大型项目
4.???????简化编译构建过程和编译过程,只需要cmake+make就可以
5.???????高效率
6.???????可扩展,可以为cmake编写特定功能的模块,扩充cmake功能
如何安装cmake
1.???????Cmake的安装可以使用autotools进行安装,点击cmake-2.8.6.tar.gz?链接,可以对软件进行下载。
2.???????./configure
3.???????make
4.???????sudo make install
?
Cmake的原理
?
Helloworld cmake
//main.cpp
#includecstdio
?
int main()
{
??? printf(hello world from main\n);
??? return 0;
}
?
创建CMakeLists.txt(注意大小写一个字母都不能错)
向该文件中加入以下几行(稍后会做解释)
PROJECT (HELLO)
SET(SRC_LIST main.cpp)
MESSAGE(STATUS This is BINARY dir ${HELLO_BINARY_DIR})
MESSAGE(STATUS This is SOURCE dir ${HELLO_SOURCE_DIR})
ADD_EXECUTABLE(hello ${SRC_LIST})
运行以下命令:
cmake . (别忘记加上这个点,表示当前目录)
注意执行完这句话之后会生成几个文件如下:
CMakeFiles, CMakeCache.txt, cmake_install.cmake等文件,并且生成了Makefile
然后执行make?就可以生成可执行文件hello
这是当前目录下就会生成可执行文件如下图:
对例子的解释:
CMakeLists.txt的内容如下:
PROJECT (HELLO)
SET(SRC_LIST main.cpp)
MESSAGE(STATUS This is BINARY dir ${HELLO_BINARY_DIR})
MESSAGE(STATUS This is SOURCE dir ${HELLO_SOURCE_DIR})
ADD_EXECUTABLE(hello ${SRC_LIST})
?
Project的指令的语法是:
PROJECT(projectname [CXX] [C] [JAVA])
这个执行是用来定义工程的名称的和定义工程支持的语言。这个指令也隐式的定义了两个cmake变量:projectname_BINARY_DIR以及projectname_BINARY_DIR,这里就是HELLO_BINARY_DIR和HELLO_SOURCE_DIR,两个变量指的都是当前工程的路径。
SET指令的语法:
SET(VAR[VALUE] [CACHE TYPE DOCSTRING [FORCE]])
Set指令是用来显式的定义变量的,我们之前用到的是SET(SRC_LIST main.cpp)如果有多个源文件,也可以定义成SET(SRC_LIST main.cpp t1.cpp t2.cpp)。
?
MESSAGE指令的语法是:
MESSAGE([SEND_ERROR | STATUS | FATAL_ERROR] message to display ...)
这个指令用于向终端输出用户信息,包含三种类型:
SEND_ERROR,产生错误,生成过程被跳过。
SATUS,输出前缀为-的信息。
FATAL_ERROR,立即终止所有cmake过程。
我们在这里使用的是STATUS信息输出,显示了由PROJECT指令顶一顶两个饮食变量HELLO_BINARY_DIR和HELLO_SOURCE_DIR。
?
ADD_EXECUTABLE(hello ${SRC_LIST})
定义了这个工程会生成一个文件名为hello的可执行文件,相关的源文件是SRC_LIST中定义的源文件列表,本例中你可以直接写成ADD_EXECUTABLE(hello main.c)。
?
将本例改写成一个最简化的CMakeLists.txt:
PROJECT(HELLO)
ADD_EXECUTABLE(hello main.c)
?
下面我们介绍一个比较实用的例子,即包含生成静态库又包含引
您可能关注的文档
- ch-大型课题【DOC精选】.doc
- Ch-求解常微分方程-【DOC精选】.doc
- CF实现两个LED灯闪烁【定时器+查询方式】【DOC精选】.doc
- Ch Power Electronic systems【DOC精选】.doc
- CATIA V自学教程【DOC精选】.doc
- ch.【DOC精选】.doc
- ch9 GameAPI(三):TiledLayer和图层管理【DOC精选】.doc
- Ch4_Testbank【DOC精选】.doc
- Ch5_Testbank【DOC精选】.doc
- CH--【DOC精选】.doc
- 2-红河州建筑施工安全生产标准化工地复核评分表(2022年修改版).docx
- 6.锡通项目2018年下半年工作会汇报材料(2018.7.9).docx
- 2018道路工程知识点汇总(新版).docx
- 附件3:月度生产例会安全汇报资料-站台门项目部.docx
- 附件2:广东建工集团2018年度科技成果汇总表.DOC
- 马武停车区、三汇停车区停车位管理系统,0#台账缺量.doc
- 攀成钢委办发〔2015〕19号(党风廉政建设责任考核与追究办法).doc
- 1-红河州建筑工程质量管理标准化复核评分表(2022年修改版).docx
- 中交第三公路工程局第四工程分公司项目经济合同结算管理办法(修订).doc
- 厂站安全操作规程汇编.doc
文档评论(0)