当前位置: 首页 > news >正文

36 氪 网站如何优化简单网站建设视频教程

36 氪 网站如何优化,简单网站建设视频教程,哈尔滨建设集团,品牌网站建设小蝌蚪2a【写在前面】 生成器表达式在构建系统生成期间进行评估#xff0c;以生成特定于每个构建配置的信息。它们的形式为 $...。例如#xff1a; target_include_directories(tgt PRIVATE /opt/include/$CXX_COMPILER_ID) 这将扩展为 “/opt/include/GNU”、“/opt…【写在前面】 生成器表达式在构建系统生成期间进行评估以生成特定于每个构建配置的信息。它们的形式为 $...。例如 target_include_directories(tgt PRIVATE /opt/include/$CXX_COMPILER_ID) 这将扩展为 “/opt/include/GNU”、“/opt/include/Clang”等具体取决于所使用的 C 编译器。 许多目标属性的上下文中允许使用生成器表达式例如: prop_tgt:LINK_LIBRARIES、 INCLUDE_DIRECTORIES、 COMPILE_DEFINITIONS 等。它们也可以在使用命令填充这些属性时使用例如: command:target_link_libraries、 target_include_directories()、 target_compile_definitions() 等。它们启用条件链接、编译时使用的条件定义、条件包含目录等。这些条件可能基于构建配置、目标属性、平台信息或任何其他可查询信息。 生成器表达式可以嵌套 target_compile_definitions(tgt PRIVATE $$VERSION_LESS:$CXX_COMPILER_VERSION,4.2.0:OLD_COMPILER)如果 CMAKE_CXX_COMPILER_VERSION 小于 4.2.0则以上将扩展为 OLD_COMPILER。 【正文开始】 官方对其的介绍 生成器表达式通常在命令参数之后进行解析。如果生成器表达式包含空格、换行符、分号或其他可能被解释为命令参数分隔符的字符则在传递给命令时整个表达式应该用引号括起来。如果不这样做可能会导致表达式被拆分并且它可能不再被识别为生成器表达式。 使用 add_custom_command() 或 add_custom_target() 时请使用 VERBATIM 和 COMMAND_EXPAND_LISTS 选项以获得可靠的参数拆分和引用。 # WRONG: Embedded space will be treated as an argument separator. # This ends up not being seen as a generator expression at all. add_custom_target(run_some_toolCOMMAND some_tool -I$JOIN:$TARGET_PROPERTY:tgt,INCLUDE_DIRECTORIES, -IVERBATIM )# Better, but still not robust. Quotes prevent the space from splitting the # expression. However, the tool will receive the expanded value as a single # argument. add_custom_target(run_some_toolCOMMAND some_tool -I$JOIN:$TARGET_PROPERTY:tgt,INCLUDE_DIRECTORIES, -IVERBATIM )# Nearly correct. Using a semicolon to separate arguments and adding the # COMMAND_EXPAND_LISTS option means that paths with spaces will be handled # correctly. Quoting the whole expression ensures it is seen as a generator # expression. But if the target property is empty, we will get a bare -I # with nothing after it. add_custom_target(run_some_toolCOMMAND some_tool -I$JOIN:$TARGET_PROPERTY:tgt,INCLUDE_DIRECTORIES,;-ICOMMAND_EXPAND_LISTSVERBATIM )使用变量构建更复杂的生成器表达式也是减少错误和提高可读性的好方法。上面的例子可以像这样进一步改进 # The $BOOL:... check prevents adding anything if the property is empty, # assuming the property value cannot be one of CMakes false constants. set(prop $TARGET_PROPERTY:tgt,INCLUDE_DIRECTORIES) add_custom_target(run_some_toolCOMMAND some_tool $$BOOL:${prop}:-I$JOIN:${prop},;-ICOMMAND_EXPAND_LISTSVERBATIM )一个常见的错误是尝试通过缩进将生成器表达式拆分为多行 # WRONG: New lines and spaces all treated as argument separators, so the # generator expression is split and not recognized correctly. target_compile_definitions(tgt PRIVATE$$AND:$CXX_COMPILER_ID:GNU,$VERSION_GREATER_EQUAL:$CXX_COMPILER_VERSION,5:HAVE_5_OR_LATER )同样使用具有精心选择的名称的辅助变量来构建一个可读的表达式 set(is_gnu $CXX_COMPILER_ID:GNU) set(v5_or_later $VERSION_GREATER_EQUAL:$CXX_COMPILER_VERSION,5) set(meet_requirements $AND:${is_gnu},${v5_or_later}) target_compile_definitions(tgt PRIVATE$${meet_requirements}:HAVE_5_OR_LATER ) 由于生成器表达式是在构建系统生成期间计算的而不是在处理 CMakeLists.txt 文件期间计算的因此无法使用 message() 命令检查它们的结果。生成调试消息的一种可能方法是添加自定义目标 add_custom_target(genexdebug COMMAND ${CMAKE_COMMAND} -E echo $...)运行 cmake 后您可以构建 genexdebug 目标以打印 $... 表达式的结果即运行命令:option:cmake --build ... --target genexdebug cmake--build --target。 另一种方法是使用 file(GENERATE) 将调试消息写入文件 file(GENERATE OUTPUT filename CONTENT $...)从官方文档看cmake 生成表达式的种类非常之多 ​ 因此我将这部分内容分为多篇文章进行讲解。 【条件表达式和逻辑运算符】 文章链接 CMake 生成器表达式---条件表达式和逻辑运算符-CSDN博客文章浏览阅读101次点赞5次收藏7次。CMake 的生成器表达式用于在构建系统级别上进行条件判断和逻辑运算它们通常用在目标属性和生成器表达式上下文中。这些表达式允许你根据不同的平台、配置或编译器来定制构建过程。https://blog.csdn.net/u011283226/article/details/143273933?sharetypeblogdetailsharerId143273933sharereferPCsharesourceu011283226spm1011.2480.3001.8118 【结语】 项目链接(多多star呀..⭐_⭐) Github 地址https://github.com/mengps/LearnCMake​编辑https://github.com/mengps/LearnCMakehttps://github.com/mengps/LearnCMake
http://www.dnsts.com.cn/news/101622.html

相关文章:

  • 网站程序基础开发公司发言稿观摩会
  • 泉州模板开发建站云服务器网站搭建教程
  • 网站备案省份个人简历免费制作网站
  • 论文中网站数据则呢做文献参考小程序制作合同模板
  • 中国建设银行最新招聘信息网站重庆沙坪坝新闻最新消息
  • 苏州做网站的网站设计公司怎么样
  • 虚拟机做局域网网站服务器配置套模板网站价格
  • 怎么做网络游戏推广网站优化 价格
  • 装修公司网站北京建商城网站
  • 专注营销型网站建设旅游网站建设服务对象
  • 网站是软件吗html网页框架
  • 如何传图片做网站小孩子和大人做的网站
  • 遂溪网站开发公司网页设计茶叶网站建设
  • 做网站开发要安装哪些软件学校网站建设报价
  • 佛山企业手机网站建设阿里云wordpress数据库
  • 中小企业怎么优化网站有交做拼多多网站的吗
  • 珠海免费网站建设网站一般用什么架构
  • 怎么用IP做网站地址h5网站制作费用
  • 网站做的图上传后字变得很模糊北京电商购物网站
  • 护肤品主题网站怎么做网站关键词全国各地的排名情况
  • 玉溪市网站建设推广做网站编辑工作好不好
  • 建设银行审计招聘网站网站欢迎页怎么做
  • 中国建设工程信息网站wordpress优化软件
  • 网站综合排名信息查询wordpress占内存
  • 九里微网站开发西安企业网站备案一般得多少天
  • 国内设计欣赏网站婚纱摄影网站源码下载
  • 公司和网站备案查询密码企业型网站和展示型网站的区别
  • 越秀区pc端网站建设中富国建设有限公司网站
  • 赛事网站开发seo教程从零开始
  • 禅城网站建设企业湛江做网站报价