CMake从入门到精通.pdf

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CMake从入门到精通

例子一 单个源文件 main.c 例子二 ==分解成多个 main.c hello.h hello.c 例子三 ==先生成一个静态库,链接该库 例子四 ==将源文件放置到不同的目录 例子五 ==控制生成的程序和库所在的目录 例子六 ==使用动态库而不是静态库 例子一 一个经典的C 程序,如何用cmake 来进行构建程序呢? //main.c #include stdio.h int main() { printf(Hello World!/n); return 0; } 编写一个 CMakeList.txt 文件(可看做cmake 的工程文件): project(HELLO) set(SRC_LIST main.c) add_executable(hello ${SRC_LIST}) 然后,建立一个任意目录(比如本目录下创建一个build 子目录),在该build 目录下调用cmake  注意:为了简单起见,我们从一开始就采用cmake 的 out-of-source 方式来构建(即 生成中间产物与源代码分离),并始终坚持这种方法,这也就是此处为什么单独创建 一个目录,然后在该目录下执行 cmake 的原因 cmake .. -GNMake Makefiles nmake 或者 cmake .. -GMinGW Makefiles make 即可生成可执行程序 hello(.exe) 目录结构 + | + main.c + CMakeList.txt | /--+ build/ | + hello.exe cmake 真的不太好用哈,使用cmake 的过程,本身也就是一个编程的过程,只有多练才行。 我们先看看:前面提到的这些都是什么呢? CMakeList.txt 第一行project 不是强制性的,但最好始终都加上。这一行会引入两个变量  HELLO_BINARY_DIR 和 HELLO_SOURCE_DIR 同时,cmake 自动定义了两个等价的变量  PROJECT_BINARY_DIR 和PROJECT_SOURCE_DIR 因为是out-of-source 方式构建,所以我们要时刻区分这两个变量对应的目录 可以通过message 来输出变量的值 message(${PROJECT_SOURCE_DIR}) set 命令用来设置变量 add_exectuable 告诉工程生成一个可执行文件。 add_library 则告诉生成一个库文件。  注意:CMakeList.txt 文件中,命令名字是不区分大小写的,而参数和变量是大小写 相关的。 cmake 命令 cmake 命令后跟一个路径(..),用来指出 CMakeList.txt 所在的位置。 由于系统中可能有多套构建环境,我们可以通过-G 来制定生成哪种工程文件,通 过cmake -h 可得到详细信息。 要显示执行构建过程中详细的信息( 比如为了得到更详细的出错信息),可以在 CMakeList.txt 内加入:  SET( CMAKE_VERBOSE_MAKEFILE on ) 或者执行make 时  $ make VERBOSE=1 或者  $ export VERBOSE=1  $ make 例子二 一个源文件的例子一似乎没什么意思,拆成3 个文件再试试看:  hello.h 头文件 #ifndef DBZHANG_HELLO_ #define DBZHANG_HELLO_ void hello(const char* name); #endif //DBZHANG_HELLO_  hello.c #include stdio.h #include hello.h void hello(const char * name) { printf (Hello %s!/n, name); }  main.c #include hello.h int main() { hello(World); return 0; } 

文档评论(0)

xxj1658888 + 关注
实名认证
内容提供者

教师资格证持证人

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

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档