电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOCX文档下载
分享到微信 分享到微博 分享到QQ空间

编写 CMakeLists 文件掌握 CMake

  • 资源ID:358434177       资源大小:21.53KB        全文页数:6页
  • 资源格式: DOCX        下载积分:5金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要5金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

编写 CMakeLists 文件掌握 CMake

编辑CMakeList文件CMakeLists文件几乎可以在任何文本编辑器中进行编辑。一些编辑器,如记事本+,带有CMake语法突出显示和内置缩进支持。对于像Emacs或Vim这样的编辑器,CMake包括缩进和语法突出显示模式。这些可以找到在源发行版的目录中,或从CMake下载页面。Auxiliary在任何受支持的生成器(Makefiles、VisualStudio等)中,如果您编辑CMakeLists文件并重建,有些规则会自动调用CMake以更新生成的文件(例如生成文件或项目文件),根据需要。这有助于确保您生成的文件是始终与您的CMakeList文件同步。清宗语言CMake语言由注释、命令和变量组成。评论注释从行尾开始并一直运行到行尾。有关更多详细信息,请参阅手册。#变量CMakeLists文件使用变量与任何编程语言非常相似。清明变量名称区分大小写,只能包含字母数字字符和下划线。许多有用的变量由CMake自动定义,它们是手册中讨论过。这些变量以开头。避免此命名约定(并且,理想情况下,建立自己的)用于特定于项目的变量。CMAKE_所有CMake变量在内部存储为字符串,尽管它们可能有时被解释为其他类型的。使用该命令设置变量值。在最简单的形式中,第一个参数是变量的名称和其余参数是值。打包了多个值参数到以分号分隔的列表中并存储在变量作为字符串。例如:set(Foo"")#1quotedarg->valueis""set(Fooa)#1unquotedarg->valueis"a"set(Foo"abc")#1quotedarg->valueis"abc"set(Fooabc)#3unquotedargs->valueis"a;b;c"可以使用语法在命令参数中引用变量,其中是变量名称。如果命名变量未定义,引用将替换为空字符串;否则,它将替换为变量的值。更换是在扩展未带引号的参数之前执行,因此可变包含分号的值被拆分为零个或多个参数原始未引用论点的位置。例如:$VARVARset(Fooabc)#3unquotedargs->valueis"a;b;c"command($Foo)#unquotedargreplacedbya;b;c#andexpandstothreeargumentscommand("$Foo")#quotedargvalueis"a;b;c"set(Foo"")#1quotedarg->valueisemptystringcommand($Foo)#unquotedargreplacedbyemptystring#andexpandstozeroargumentscommand("$Foo")#quotedargvalueisemptystring系统环境变量和Windows注册表值可以是直接在CMake中访问。要访问系统环境变量,使用语法。CMake还可以引用注册表许多命令中的条目使用形式的语法,其中路径从注册表树和注册表项生成。$ENVVARHKEY_CURRENT_USERSoftwarepath1path2;key可变范围CMake中的变量的作用域与大多数变量略有不同语言。设置变量时,该变量对当前可见CMakeLists文件或函数以及任何子目录的CMakeLists文件,调用的任何函数或宏,以及包含使用命令。当新的子目录被处理(或调用函数),创建一个新的变量范围,并且使用调用中所有变量的当前值初始化范围。在子作用域中创建的任何新变量或所做的更改对现有变量,不会影响父范围。考虑以下示例:function(foo)message($test)#testis1hereset(test2)message($test)#testis2here,butonlyinthisscopeendfunction()set(test1)foo()message($test)#testwillstillbe1here在某些情况下,您可能希望函数或子目录设置变量在其父级的作用域中。有一种方法可以让CMake返回一个值,可以通过使用带有命令的选项来完成。我们可以修改前面的示例,以便函数更改测试的值在其父级的范围内,如下所示:PARENT_SCOPEfoofunction(foo)message($test)#testis1hereset(test2PARENT_SCOPE)message($test)#teststill1inthisscopeendfunction()set(test1)foo()message($test)#testwillnowbe2hereCMake中的变量按命令执行的顺序定义。请考虑以下示例:#FOOisundefinedset(FOO1)#FOOisnowsetto1set(FOO0)#FOOisnowsetto0要了解变量的范围,请考虑以下示例:set(foo1)#processthedir1subdirectoryadd_subdirectory(dir1)#includeandprocessthecommandsinfile1.cmakeinclude(file1.cmake)set(bar2)#processthedir2subdirectoryadd_subdirectory(dir2)#includeandprocessthecommandsinfile2.cmakeinclude(file2.cmake)在此示例中,由于变量是在首先,它将在处理DIR1和DIR2时定义。在相反,仅在处理DIR2时定义。同样,将在处理file1.cmake和file2.cmake,而只会在处理时定义文件2.cmake.foobarfoobar命令命令由命令名称、左括号、空格组成分隔的参数和右括号。每个命令在它在CMakeLists文件中的显示顺序。有关完整列表,请参阅手册CMake命令。CMake不再区分大小写,因此在你看到的地方,你可以使用or代替。它被认为是使用小写命令的最佳做法。所有空格(空格、换行符、制表符)被忽略,但分隔参数除外。因此,命令可能跨越多行,只要命令名称和左括号在同一行。commandCOMMANDCommandCMake命令参数以空格分隔且区分大小写。命令参数可以是引用的,也可以是未引用的。引用的参数开始和结束在双引号(“)中,并且始终只表示一个参数。任意双倍值中包含的引号必须使用反斜杠进行转义。考虑对需要转义的参数使用括号参数,请参阅手册。一个没有引用的论点以双引号以外的任何字符开头(后面的双引号是文字),并通过以下方式自动扩展为零个或多个参数在值内的分号上分隔。例如:command("")#1quotedargumentcommand("abc")#1quotedargumentcommand("a;b;c")#1quotedargumentcommand("a""b""c")#3quotedargumentscommand(abc)#3unquotedargumentscommand(a;b;c)#1unquotedargumentexpandsto3基本命令正如我们之前看到的,和命令显式设置或取消设置变量。、和命令提供字符串和列表的基本操作。和命令是主要的用于定义要构建的可执行文件和库的命令,以及哪些源文件组成它们。对于VisualStudio项目,源文件将照常显示在IDE中,但任何头文件都显示在项目使用不会。要显示头文件,只需将它们添加到可执行文件或库的源文件列表中;这可以为所有发电机完成。任何不使用的生成器头文件直接(例如基于Makefile的生成器)将干脆忽略它们。流控制CMake语言提供了三种流控制结构来帮助组织您的CMakeList文件并保持它们可维护。· 条件语句(例如)· 循环构造(例如和)· 程序定义(例如)条件语句首先,我们将考虑该命令。在许多方面,CMake中的命令就像任何其他语言。它计算其表达式并使用它来执行代码在其正文中或子句中的代码(可选)。为例:if(FOO)#dosomethinghereelse()#dosomethingelseendif()CMake还支持帮助顺序测试多个条件。例如:if(MSVC80)#dosomethinghereelseif(MSVC90)#dosomethingelseelseif(APPLE)#dosomethingelseendif()该命令记录了它可以测试的许多条件。循环构造和命令允许您处理按顺序发生的重复性任务。命令中断在正常情况下脱离OR循环结束。该命令使您能够执行组的CMake命令在列表成员上重复执行。考虑以下示例改编自VTKforeach(tfileTestAnisotropicDiffusion2DTestButterworthLowPassTestButterworthHighPassTestCityBlockDistanceTestConvolve)add_test($tfile-image$VTK_EXECUTABLE$VTK_SOURCE_DIR/Tests/rtImageTest.tcl$VTK_SOURCE_DIR/Tests/$tfile.tcl-D$VTK_DATA_ROOT-VBaseline/Imaging/$tfile.png-A$VTK_SOURCE_DIR/Wrapping/Tcl)endforeach()命令的第一个参数是变量,每次迭代时将采用不同的值循环;其余参数是要在其上执行的值列表圈。在此示例中,循环的主体只是一个CMake命令,.在的正文中,每个引用循环变量(在本例中)的时间将替换为列表中的当前值。在第一个迭代,出现的将替换为。在下一次迭代中,将替换为。循环将继续循环,直到处理完所有参数。tfile$tfileTestAnisotropicDiffusion2D$tfileTestButterworthLowPass值得一提的是,循环可以嵌套,并且循环变量在任何其他变量之前被替换扩张。这意味着在循环的主体中,您可以使用循环变量构造变量名称。在下面的代码中,循环变量展开,然后与连接。然后扩展并测试新变量名称看看它是否匹配.tfile_TEST_RESULTFAILEDif($tfile_TEST_RESULTMATCHESFAILED)message("Test$tfilefailed.")endif()该命令根据测试条件提供循环。这命令中测试表达式的格式与它适用于命令,如前所述。考虑以下示例,由CTest使用。请注意,CTest在内部更新的值。CTEST_ELAPSED_TIME#runparaviewandctesttestdashboardsfor6hours#while($CTEST_ELAPSED_TIMELESS36000)set(START_TIME$CTEST_ELAPSED_TIME)ctest_run_script("dash1_ParaView_vs71continuous.cmake")ctest_run_script("dash1_cmake_vs71continuous.cmake")endwhile()过程定义和命令支持重复性任务可能分散在您的CMakeLists文件中。一旦宏或函数被定义,它可以被任何CMakeList文件使用后处理它的定义。CMake中的函数非常类似于C或C+中的函数。您可以将参数传递到其中,它们成为功能。同样,一些标准变量,如、和、等。是定义。函数调用具有

注意事项

本文(编写 CMakeLists 文件掌握 CMake)为本站会员(云***)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.