(linux34CMake实践笔记.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(linux34CMake实践笔记

《CMake实践》学习笔记 一、CMake的特点 1、开放源代码,使用类BSD许可发布。http://CM/HTML/Copyright.html 2、跨平台,并可生成native编译配置文件,在Linux/Unix平台,生成makefile,在苹果平台,可以生成xcode,在Windows平台,可以生成MSVC的工程文件。 3、能够管理大型项目,KDE4就是最好的证明。 4、简化编译构建过程和编译过程。CMake的工具链非常简单:cmake+make。 5、高效虑,按照KDE官方说法,CMake构建KDE4的kdelibs要比使用autotools来构建KDE3.5.6的kdelibs快40%,主要是因为CMake在工具链中没有libtool。 6、可扩展,可以为CMake编写特定功能的模块,扩充CMake功能。 二、初试CMake – CMake的helloworld 实验1:单个程序文件的CMake 1、在/backup/CMake/t1目录建立main.c和CMakeLists.txt(注意文件名大小写) main.c文件内容: #include stdio.h int main() { printf(Hello World from t1 Main!\n); return 0; } CMakeLists.txt文件内容: project (hello) set(SRC_LIST main.c) message(STATUS This is BINARY dir ${hello_BINARY_DIR}) message (STATUS This is SOURCE dir ${hello_SOURCE_DIR}) add_executable (hello ${SRC_LIST}) 2、开始构建 Linux下命令: ① cmake . (注意命令后面的点号,代表本目录) 系统自动生成了:CMakeFiles, CMakeCache.txt, CMake_install.CMake等文件, 并且生成了Makefile。现在不需要理会这些文件的作用,以后你也可以不去理会。最关键的是,它自动生成了Makefile。 备注:Windows系统不需要Makefile。 ② make (Build And Link) ③ ./hello (Run) 得到输出: Hello World from t1 Main! 3、简单的解释 ①CMakeLists.txt 我们来重新看一下CMakeLists.txt,这个文件是CMake的构建定义文件,文件名是大小写相关的,如果工程存在多个目录,需要确保每个要管理的目录都存在一个CMakeLists.txt。 ②project定义工程名 project指令的语法是: project (projectname [CXX] [C] [Java]) 你可以用这个指令定义工程名称,并可指定工程支持的语言,支持的语言列表是可以忽略的,默认情况表示支持所有语言。 这个指令隐式的定义了两个CMake变量: projectname_BINARY_DIR以及projectname_SOURCE_DIR,这里就是 hello_BINARY_DIR hello_SOURCE_DIR (所以CMakeLists.txt中两个MESSAGE指令可以直接使用了这两个变量),因为采用的是内部编译,两个变量目前指的都是工程所在路径/backup/CMake/t1,后面我们会讲到外部编译,两者所指代的内容会有所不同。 ③定义自变量 set指令的语法是: set(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]]) 现阶段,你只需要了解SET指令可以用来显式的定义变量即可。 比如我们用到的是SET(SRC_LIST main.c),如果有多个源文件,也可以定义成: set(SRC_LIST main.c t1.c t2.c)。 ④控制台输出 message指令的语法是: message ([SEND_ERROR | STATUS | FATAL_ERROR] message to display ...) 这个指令用于向终端输出用户定义的信息,包含了三种类型: SEND_ERROR :产生错误,生成过程被跳过。 SATUS :输出前缀为—— 的信息。 FATAL_ERROR :立即

文档评论(0)

84537592 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档