cmake实践.pdf

电脑杂谈  发布时间:2020-03-21 00:17:30  来源:网络整理

cmake实践pdf_cmake实践 pdf_ejb jpa-持久层开发实践详解 pdf

Cmake练习pdf高清晰度版本,由经验丰富的程序员编写,适合引入cmake.

cmakeCmake的介绍不再使您在构建项目时绝望地自杀. 背景知识cmake是Kitware公司和一些开源开发人员在开发几个工具包(VTK)的过程中的衍生产品. 最终形成一个系统,成为一个独立的开源项目. 该项目诞生于2061年. 其官方网站是org. 您可以通过访问官方网站获取有关cmake的更多信息. cmake的普及实际上归因于KDE4的发展(似乎是年度svn,KDE将代码仓库从CVS迁移到SVN,同时证明了SWN可以管理大型项目)在将近10年的时间里,他们终于决定为KDE4选择一种新的工程构建工具. 用KDE开发人员的话说,根本原因是: 只有少数“编译专家”才能掌握当前的KDE构建系统(admin / akefile. 常见). 选择并尝试了unsermake,scons和cmake之后,KDE4决定使用cmake作为其自己的构建系统. 在迁移期间,进度非常顺利,并且得到了cmake开发人员的支持. 因此,当前的KDE4开发版本已完全使用cmake构建. kdesvn,rosegarden等项目也已开始使用cmake,这也注定了cmake将不可避免地成为主流构建系统.

cmake实践 pdf_ejb jpa-持久层开发实践详解 pdf_cmake实践pdf

2,功能cmake具有以下功能: 1.开放源代码,以类似BSD的许可证发行2.跨平台,并且可以在Linux / Unix平台上生成本机编译配置文件,在Apple平台上生成makefile. ,您可以生成Xcode. 在ndows平台上,您可以生成MSVC项目文件3,并且能够管理大型项目,KDE4是最好的证明. 4,简化了编译构建过程和编译过程. Cmake的工具链非常简单: cmake + make. 高效. 根据官方的KDE声明,CMake构建KDE4的kdelibs比使用autotoll5构建KDE3.5,6的kdelibs快40%,这主要是因为Cmake在工具链中没有libtool6,它是可扩展的并且可以为cmake编写. 功能模块,扩展蛋糕功能. 3.问题,没有问题吗? 1,cmake非常简单,但是绝对不像听起来或想象的那么简单. 2,cmake编写的过程实际上是一个编程过程,与以前使用自动工具的过程相同,但是您需要使用“ cmake语言和语法”编写CMakelists.txt(每个目录一个). 3,cmake与现有系统的协调不是特别理想,例如pkgconfig. 您将在实际使用中体验到它. 尽管可以使用某些扩展名,但这并不理想.

4. 个人建议如果您没有实际的项目要求,则可以在此处停止查看,因为cmake的学习过程是一个实际的过程. 如果没有实践,再阅读几天后,您将忘记它. 2.如果您的项目只有几个文件,最好直接写№makefile. 3.如果您使用的是C / C ++ / Java以外的语言,请不要使用cmake(至少现在是这样). 4.如果您使用的语言具有非常完整的构建系统,例如java ant,则您不需要学习cmake虽然有成功的例子,例如QT4.3 csharp绑定yoto. 如果项目已经使用了非常完整的项目管理工具,并且没有维护问题,则无需迁移到cmake4. 如果仅使用qt编程,则无需使用cmake,因为qmake比管理Qt项目更加和自动化. cmake高得多. 其次,我仍然需要安装cmake吗? Cmake已成为主要Linux发行版提供的组件. 例如,Everest直接包含在系统中,而Fedora提供在额外的存储库中. 因此,您不太可能需要自己安装它. 如果您使用的操作系统(例如Windows或某些Linux版本)不提供cmake或更旧的版本,建议您直接从cmake的官方网站下载并安装它. ittp: //www.cmake.org此页面上的/ html / downloadhtml提供了各种不同操作系统的源代码下载和二进制下载. 您可以选择适合您的操作系统的版本进行下载和安装.

ejb jpa-持久层开发实践详解 pdf_cmake实践pdf_cmake实践 pdf

由于每个系统的安装方法和软件包管理格式不同,因此在此不再赘述. 我相信有可能成功安装cmake. 第一次尝试helloworldcmake-cmake的世界. 世界,您好,在本节中选择最简单的方法. 示例Helloworld演示了cmake的完整构建过程,本节不深入讨论cmake,仅显示一个简单示例,并给出一个粗略的解释. 我们选择Everest linux作为基本开发平台,因为这只是CD发行版本,其中包括完整的开发环境,例如gc.2 / gtk / qt3 / qt4. 同时,系统默认情况下集成了最新版本的cmake 24.6. 准备: 首先,在/ backup目录中创建一个cmake目录,以将所有练习置于我们的学习过程中. 在mkdir -p / backup / cmake之后,我们所有的cmake练习都将放在/ backup / cmake子目录中(您也可以自己安排目录,这不是限制,只是为了方便描述),然后构建首先在cmake中练习目录t1cd / backup / cmakemkdir tlcd tl在t1目录中创建main.C和CMakelists.txt(注意文件名的情况)main,C文件内容: //main.c# include

输出看起来像这样: 检查工作的C编译器: / usr / bin / gcc检查工作的C编译器: / usr / bin / gcc-works检查void的大小*检查void-doneCheck的大小用于工作的CXX编译器: / usr / bin / C ++检查可运行的CXX编译器: / usr / bin / C ++-works这是BInarY目录/ backup / cmake / tl这是源目录/ backup / cmake / tl配置完成生成的doneBuild文件已写入到: / backup / cmake / tl让我们看一下目录的内容: 您会发现系统自动生成: CMakefiles,CMakecache,txt,cmake install. cmake和其他文件以及生成的Makefile现在不需要理会这些文件的作用,以后您也可以忽略它们.

ejb jpa-持久层开发实践详解 pdf_cmake实践pdf_cmake实践 pdf

最重要的是,它会自动生成一个Makefile,然后执行项目的实际构建. 在此目录中输入make命令,您可能会获得以下颜色输出: 目标hello的扫描依赖项[100%构建c对象CMakeFiles / hello. dir /main.oinking C可执行文件hello [100]已构建的目标hello如果需要查看make build的详细过程,可以使用make verbose = 1或VERB0SE = 1make命令来构建. 至此,我们所需的目标文件weLo已经建立并位于当前目录中. 尝试运行: Chello以获取输出: main中的Hello world. 恭喜,到目前为止,您已经完全掌握了cmake的用法. 3.简单的解释: 让我们再次看看CMakelists.txt. 该文件是cmake的构建定义文件. 文件名区分大小写. 如果项目中有多个目录,则需要确保每个要管理的目录都存在一个目录. CMakelists.txt. (关于多目录的构造cmake实践 pdf,我们将在后面提到,这里不再赘述). 上例中CMakelists.tt文件的内容如下: PROJECT(HELLO)SET(SRC LIST main.c)MESSAGE(状态这是二进制目录$ tHELLO BINARY DIR))MESSAGE(状态这是源目录$ HELLO源DIR))添加可执行文件(hello $ SRC LIST])PR0] ECT命令语法为PROJECT(项目名称[CXX] [c] [Javal)您可以使用此命令来定义项目名称并指定语言支持的语言. 项目. 支持的语言列表被忽略,这意味着默认情况下支持所有语言.

此指令隐式定义了两个cmake变量: projectname> BINARY DIR和 SOURCE DIR,这是正数LL0 BINARY DIR和HELL0S0 URCE DIR(因此CMakelists中的两个MESSAGE指令,txt可以直接使用这两个变量),因为使用的是内部编译,所以这两个变量当前指向项目所在的路径/ backup / cmake / t1,我们稍后将讨论外部编译,这两个变量所引用的内容将有所不同. 同时,cmake系统还帮助我们预定义变量PROJECT BINARY DIR和PROJECT S0 URCE DIR,它们的值分别与HELL0 BINARY DIR和HELLO S0 URCE DIR一致. 为了统一起见,建议以后使用PROJECT BINARY DIR,PROJECT S0 URCE DIR. 即使修改了项目名称,这两个变量也不会受到影响. 如果使用≤projectname> S0URCE_DIR,则在修改项目名称后,您需要同时修改这些变量. SET指令的语法为: SET(VAR [VALUE] [CACHE TYPE DOCSTRING FORCE] 1)在此阶段,您只需要了解SET指令可用于显式定义变量.

cmake实践pdf_ejb jpa-持久层开发实践详解 pdf_cmake实践 pdf

例如,我们使用SET(SRC LIST main,C),如果有多个源文件,则也可以定义为: SET(SRC LIST main. c tl c t2.c)cMESSAGE指令的语法是: MESSAGE ([[SEND ERROR STATUS FATAL ERROR] [显示错误消息消息,该命令用于将用户定义的信息输出到终端,它包含三种类型: SEND ERR0R,它会产生错误,跳过生成过程,以及带有将输出前缀FATAL ERROR,立即终止所有cmake进程,我们在这里使用STATUS信息来演示PR0JECT指令定义的两个隐式变量HELL0 BINARY DIR和HELL0 SOURCE DIR. ADD EXECUTABLE(hello $ [SRC LIST])对此进行了定义. project将生成一个名为hello的可执行文件,相关的源文件是SRC LIST中定义的源文件列表,在此示例中,您还可以直接编写ADD EXECUTABLE(hello main c). 在此示例中,我们使用$ {}引用变量这是cmake的使用方式变量. 但是,也有一些例外. 例如,在工业控制语句中,使用变量名直接引用变量,而无需使用S {}.

如果使用$()来应用变量,实际上IF会判断名为S(}的变量,这当然是不存在的. 将此示例重写为最简化的CMakelists.txt: PROJECT(HELLOADD EXECUTABLE(hello main.c)4,前面提到的基本语法规则,cmake实际仍然需要使用“ cmake语言和语法”来​​构建,上面的内容就是所谓的“ cmake语言和语法”,最简单的语法规则是: 变量使用$()的值,但是在IF控制语句中,直接使用变量名2,指令(参数1参数2 ...)的参数括在方括号中,并在参数之间使用空格或点. 以上面的ADD EXECUTABLE指令为例,如果存在另一个func.C源文件,则必须将其写为ADD EXECUTABLE(hello main.C func.c)或ADD EXECUTABLE(hello main.C; func.C)3该指令不区分大小写,参数和变量区分大小写,但是建议不要您可以使用所有大写指令. 上面的MESSAGE指令我们使用了此规则MESSAGE(状态为二进制dir $ HELLO BINARY DIR])也可以写为: MESSAGE(状态“这是bina ry dir $ HELLO BINARY DIRI”)这里需要特别说明的是: 项目名称HELL0与生成的可执行文件hello无关.

hello定义可执行文件的文件名. 您可以编写: ADD EXECUTABLE(tl main. c)编译后,将生成一个t1可执行文件. 5,对语法的疑问cmakeε的语法仍然更加灵活,并考虑了各种情况,例如SET(SRC LIST main.C)也可以写成SET(SRC LIST“ main.C”),没有区别,但是假定源文件的文件名为func.c(文件名包含空格). 这时,必须使用双引号. 如果将其写为SET(SRC_列表fu nc.c),则会发生错误,提示您查找fu文件和nC.C文件. 在这种情况下,它必须写为SET(SRC LIST“ fu nC. C”). 此外,您可以忽略s0urce列表中的源文件后缀,例如,可以将其写为ADD EXECUTABLE(tI main), cmake会自动在此目录中查找main.C或main.cpp等. 当然,最好不要偷懒,这样在该目录中确实存在main.C和main,并且参数可以也用分号分隔. 以下示例也是合法的: 可以将ADD EXECUTABLE(t1main.Ct1.c)编写为ADD EXECUTABLE(t1main.c; t1.C). 在编写CMakelists.txt时cmake实践 pdf,我们只需要注意形成统一的样式即可.

6. 清理项目: 就像经典的自动工具系列工具一样,运行make clean清理构建结果​​. 7,有问题吗?问题! “我试图运行make distclean. 该指令通常用于清除在生成过程中生成的中间文件. 如果要发布代码,则必须清除所有中间文件,但是为什么要在cmake项目中使用此命令?是无效的吗?“是的,cmake不支持make distclean. 对此有一个官方解释: 由于CMakelists,txt可以执行脚本并通过该脚本生成一些临时文件,但是无法跟踪这些临时文件. 确切的说,文件是什么. 因此,没有办法提供可靠的制造清洁解决方案. 一些使用gnu autotools创建的构建树有一个makedistclean“目标,它清除构建并删除Makefile和生成的构建系统的其他部分. 由于CMakeLists,CMake不会生成make distclean”目标. txt文件可以运行脚本和任意命令CMake无法准确跟踪运行时生成的文件


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-146578-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...