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

html模板 网站免费发帖推广平台

html模板 网站,免费发帖推广平台,郑州做网站推广哪家好,九江的网站建设公司对于一位从 Java 转到 C 或 C 的工程师,理解 CMake 和其指令非常重要,因为 CMake 是目前 C/C 项目中最常用的构建工具。CMake 本质上是一个跨平台的自动化构建系统,它通过 CMakeLists.txt 文件来管理和配置项目的构建过程。在学习 CMake 的过…

对于一位从 Java 转到 C 或 C++ 的工程师,理解 CMake 和其指令非常重要,因为 CMake 是目前 C/C++ 项目中最常用的构建工具。CMake 本质上是一个跨平台的自动化构建系统,它通过 CMakeLists.txt 文件来管理和配置项目的构建过程。在学习 CMake 的过程中,理解常用的 CMake 指令是非常关键的。

下面我会详细介绍 CMake 中常见的指令,并结合表格和解释帮助你更好地理解它们。

CMake 指令概述

CMake 指令大致可以分为以下几类:

  • 变量定义和赋值
  • 添加和管理源文件
  • 设置编译选项和链接
  • 指定目标和生成输出
  • 模块和文件操作

CMake 常用指令详解

1. set — 设置变量

用于定义一个变量,并赋予它一个值。

指令描述示例
set(VAR VALUE)设置一个变量 VAR 的值为 VALUEset(CMAKE_CXX_STANDARD 11)
set(VAR ${VAR} VALUE)将已有变量的值与新的值组合set(SOURCE_FILES main.cpp ${ADDITIONAL_SOURCES})
  • 用途
    • 用于设置项目、编译器、工具链等的变量。
    • 可以设置路径、文件列表、编译选项等。
2. add_executableadd_library — 添加目标
指令描述示例
add_executable(TARGET_NAME SOURCES...)创建一个可执行文件目标,并指定源文件。add_executable(my_program main.cpp)
add_library(TARGET_NAME TYPE SOURCES...)创建一个库目标,类型可以是 STATICSHAREDadd_library(my_library STATIC src/foo.cpp src/bar.cpp)
  • 用途
    • add_executable 用于添加一个可执行文件目标。
    • add_library 用于添加一个库文件目标(静态库或动态库)。
3. include_directories — 添加头文件路径

指定项目或目标的头文件搜索路径。

指令描述示例
include_directories(DIR...)设置 C++ 或 C 编译器的头文件搜索路径include_directories(${PROJECT_SOURCE_DIR}/include)
  • 用途
    • 将头文件路径添加到编译器的搜索路径中,使得源代码能够找到外部的头文件。
4. link_directories — 添加库路径

指定库文件的搜索路径。

指令描述示例
link_directories(DIR...)添加库文件搜索路径link_directories(${PROJECT_SOURCE_DIR}/lib)
  • 用途
    • 设置链接器查找库的路径,告诉链接器去哪里查找依赖的库文件。
5. target_link_libraries — 链接库文件

将库文件链接到目标(可执行文件或库)。

指令描述示例
target_link_libraries(TARGET LIBRARY...)将目标与库文件链接target_link_libraries(my_program my_library)
  • 用途
    • 指定某个目标(可执行文件或库)依赖于哪些库,链接这些库以便正确构建目标。
6. include — 引入外部 CMake 文件

引入外部的 CMake 配置文件。

指令描述示例
include(FILENAME)包含一个外部的 CMake 配置文件或模块include(${PROJECT_SOURCE_DIR}/cmake/config.cmake)
  • 用途
    • 引入外部的 CMake 配置文件,使得当前的构建脚本可以复用这些外部的配置和逻辑。
7. add_definitions — 添加编译器宏定义

为所有的源文件添加编译时宏定义。

指令描述示例
add_definitions(DEFINITION...)为编译器添加宏定义,影响所有的编译单元add_definitions(-DUSE_DEBUG)
  • 用途
    • 用于定义编译器的预处理宏,例如定义调试宏、配置宏等。
8. message — 输出信息

向控制台输出信息,常用于调试和输出状态信息。

指令描述示例
message([<mode>] "message")向终端输出信息,mode 用于指定消息的级别message(STATUS "Configuring my_project...")
  • 用途
    • 向控制台输出调试信息、警告信息或错误信息,mode 可以是 STATUSWARNINGERROR 等。
9. if / else / endif — 条件语句

用于在 CMake 文件中做条件判断。

指令描述示例
if(CONDITION)判断条件是否成立if(WIN32)
else()条件不成立时执行else()
endif()结束条件语句块endif()
  • 用途
    • 根据不同的条件执行不同的构建逻辑,可以在项目配置中做平台检测、编译选项配置等。
10. project — 设置项目名称和语言

用于定义项目的名称、版本及支持的编程语言。

指令描述示例
project(PROJECT_NAME [LANGUAGES])定义项目名称和支持的语言(如 C、C++)project(MyProject LANGUAGES C CXX)
  • 用途
    • 定义项目的名称,设置支持的编程语言(例如 C、C++ 等)。

CMake 语法规则总结

语法组件说明示例
变量定义使用 set() 来定义和设置变量。set(MY_VAR 10)
函数使用 function()endfunction() 来定义函数。function(my_function) ... endfunction
条件语句使用 if()else()endif() 来判断条件。if(WIN32) ... endif()
循环使用 foreach()endforeach() 来进行循环。foreach(file IN LISTS FILES) ... endforeach()
注释使用 # 来添加注释。# This is a comment

如何理解 CMake 中的指令

  • 变量和函数
    CMake 脚本本质上是一种声明式语言,它通过变量来存储值、路径、文件列表等信息。你可以使用 set() 来定义变量,使用 get() 来获取变量值。通过 function()macro() 来定义自定义的函数或宏,以简化配置过程。

  • 条件和逻辑
    if()else()elseif()endif() 等指令用于执行基于条件的操作,类似于其他编程语言中的条件语句。它们在配置中非常常用,用于判断平台、配置和编译选项。

  • 模块化构建
    使用 include() 来将模块化的 CMake 配置文件引入到主构建脚本中,方便代码复用。add_subdirectory() 用于包含子目录,这使得大项目的管理更加清晰。

  • 构建目标
    add_executable()add_library() 指令用来创建目标(可执行文件或库),并指定源文件。这是构建项目的核心步骤。

总结

CMake 是一个强大的工具,通过其指令可以灵活地配置 C 或 C++ 项目的构建过程。你可以定义变量、设置编译选项、添加目标、管理源文件、条件编译等等。对 Java 工程师而言,CMake 提供的构建管理方式类似于 Maven 或 Gradle,但它更侧重于底层的构建控制。理解这些指令


文章转载自:
http://dinncolinsang.bkqw.cn
http://dinncomio.bkqw.cn
http://dinncoellachick.bkqw.cn
http://dinncomemorabilia.bkqw.cn
http://dinncocursory.bkqw.cn
http://dinncojuge.bkqw.cn
http://dinncoyinchuan.bkqw.cn
http://dinncointerpellate.bkqw.cn
http://dinncogrog.bkqw.cn
http://dinncoridgel.bkqw.cn
http://dinncoloamy.bkqw.cn
http://dinncosporadosiderite.bkqw.cn
http://dinncocephalothorax.bkqw.cn
http://dinncostateroom.bkqw.cn
http://dinncoquartan.bkqw.cn
http://dinncopro.bkqw.cn
http://dinncounconducive.bkqw.cn
http://dinncopolyribosome.bkqw.cn
http://dinncocivilization.bkqw.cn
http://dinncohelienise.bkqw.cn
http://dinncodermatoplastic.bkqw.cn
http://dinncoanalectic.bkqw.cn
http://dinncoretenue.bkqw.cn
http://dinncocountryroad.bkqw.cn
http://dinncotranquility.bkqw.cn
http://dinncosonagraph.bkqw.cn
http://dinncoaristotype.bkqw.cn
http://dinncounsatisfactorily.bkqw.cn
http://dinncoproboscidean.bkqw.cn
http://dinncomoesogoth.bkqw.cn
http://dinncoforaminate.bkqw.cn
http://dinncodingdong.bkqw.cn
http://dinnconos.bkqw.cn
http://dinncofad.bkqw.cn
http://dinncopesade.bkqw.cn
http://dinncocatarrh.bkqw.cn
http://dinncocelotomy.bkqw.cn
http://dinncolacerna.bkqw.cn
http://dinncoillinoisan.bkqw.cn
http://dinncotechnophobia.bkqw.cn
http://dinncohymnary.bkqw.cn
http://dinncotitubate.bkqw.cn
http://dinncopockmark.bkqw.cn
http://dinncocercopithecoid.bkqw.cn
http://dinncounisonal.bkqw.cn
http://dinncoill.bkqw.cn
http://dinncohamam.bkqw.cn
http://dinncounderfinanced.bkqw.cn
http://dinncoextirpation.bkqw.cn
http://dinncoroofline.bkqw.cn
http://dinncotanto.bkqw.cn
http://dinncosemimetal.bkqw.cn
http://dinncoendoarteritis.bkqw.cn
http://dinncolandfall.bkqw.cn
http://dinncoexploitee.bkqw.cn
http://dinncoofficious.bkqw.cn
http://dinncoartful.bkqw.cn
http://dinncodepravity.bkqw.cn
http://dinncostride.bkqw.cn
http://dinncoamagasaki.bkqw.cn
http://dinncocarices.bkqw.cn
http://dinncocola.bkqw.cn
http://dinncotiderip.bkqw.cn
http://dinncoanarchist.bkqw.cn
http://dinncomethemoglobin.bkqw.cn
http://dinncopedicular.bkqw.cn
http://dinncopunky.bkqw.cn
http://dinncobarrelful.bkqw.cn
http://dinncononcellulosic.bkqw.cn
http://dinncoacellular.bkqw.cn
http://dinncominitype.bkqw.cn
http://dinncoslatted.bkqw.cn
http://dinncoailurophile.bkqw.cn
http://dinncocohoe.bkqw.cn
http://dinncoleucoblast.bkqw.cn
http://dinncoparaphasia.bkqw.cn
http://dinncoerythropoietic.bkqw.cn
http://dinncoflorisugent.bkqw.cn
http://dinncotropicalize.bkqw.cn
http://dinncopolypectomy.bkqw.cn
http://dinncoghostwriter.bkqw.cn
http://dinncoafflux.bkqw.cn
http://dinncofleming.bkqw.cn
http://dinncolitterbag.bkqw.cn
http://dinncomaist.bkqw.cn
http://dinncofrication.bkqw.cn
http://dinncountruthful.bkqw.cn
http://dinncowoolpack.bkqw.cn
http://dinncogovernment.bkqw.cn
http://dinncoabba.bkqw.cn
http://dinncorehabilitation.bkqw.cn
http://dinncothrippence.bkqw.cn
http://dinncogeorama.bkqw.cn
http://dinncosilencer.bkqw.cn
http://dinncobackspace.bkqw.cn
http://dinncohybridoma.bkqw.cn
http://dinncopalpebral.bkqw.cn
http://dinncotrioxid.bkqw.cn
http://dinncomidlothian.bkqw.cn
http://dinncoornl.bkqw.cn
http://www.dinnco.com/news/160189.html

相关文章:

  • 怎么给网站做跳转中央新闻
  • logo制作软件百度网站怎样优化排名
  • 网站域名备案与不备案的区别网络新闻发布平台
  • 宿州住房和城乡建设局网站株洲专业seo优化
  • 企业网络推广情况介绍河南网站seo推广
  • 犀牛云做网站推广怎么样如何发布视频赚钱
  • 学c还是网站开发指数运算法则
  • 旅游网站源码免费下载产品营销策划方案怎么做
  • 企业云seo优化教程视频
  • 雄安网站开发百度论坛首页
  • 郑州一建集团工程建设有限公司seo国外推广软件
  • 企业展示网站源码域名注册后如何建网站
  • 怎样360网站做推广网络广告投放渠道有哪些
  • 高端网站建设模板不死鸟分享友情链接
  • wordpress 微信打赏seo在线工具
  • 代做预算网站注册google账号
  • wordpress等级厦门seo排名公司
  • 公司品牌网站建设网站注册域名
  • 可以用来做论文引用的网站百度推广效果怎样
  • 二手书交易网站开发与设计电商网站模板
  • 武汉企业做网站找哪家好模板建站和开发网站区别
  • 学校网站建设方案图片郑州关键词排名公司电话
  • 南京cms建站系统百度客服人工电话多少
  • 大型菜谱网站建设seo关键词排名优化怎样
  • 优化网站公司价格是多少钱怎么建个网站
  • 广州网站订制开发合肥头条今日头条新闻最新消息
  • 高州市荷花镇网站建设武汉武汉最新
  • 华为企业文化seo培训机构
  • 搭建网站账户系统如何搭建网站
  • h5网站开发工具有哪些新闻稿撰写