cmake常用命令解析

news/2024/11/17 18:36:16/

关键字

  • project可以⽤来指定⼯程的名字和⽀持的语⾔,默认⽀持所有语⾔。eg. project(HELLO)project(HELLO CXX)
  • set⽤来显式指定变量,eg. set(SRC_LIST main.cpp)
  • message向终端输出用户自定义的信息,主要包含三种信息:
    • SEND_ERROR,产⽣错误,⽣成过程被跳过
    • SATUS,输出前缀为—的信息
    • FATAL_ERROR,⽴即终⽌所有 cmake 过程
    • eg. message(STATUS "This is SOURCE dir "${HELLO_SOURCE_DIR})
  • add_executable⽣成可执⾏⽂件,eg. ADD_EXECUTABLE(hello ${SRC_LIST}) ⽣成的可执⾏⽂件名是hello,源⽂件读取变量SRC_LIST中的内容,也可以直接写ADD_EXECUTABLE(hello main.cpp)
  • add_subdirectory⽤于向当前⼯程添加存放源⽂件的⼦⽬录,并可以指定中间⼆进制和⽬标⼆进制存放的位置。eg. ADD_SUBDIRECTORY(src bin) 将src⼦⽬录加⼊⼯程并指定编译输出(包含编译中间结果)路径为bin⽬录;如果不进⾏ bin ⽬录的指定,那么编译结果(包括中间结果)都将存放在build/src ⽬录。
  • include_directories可以⽤来向⼯程添加多个特定的头⽂件搜索路径,路径之间⽤空格分割。eg. INCLUDE_DIRECTORIES(/usr/include/hello)
  • set指令重新定义executable_output_path和library_output_path变量,来指定最终的⽬标⼆进制的位置。
    • SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
    • SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
  • target_link_libraries(可执行文件名 链接库路径)需要放在add_executable之后,用于指定exe文件生成后,该文件要和什么动态库进行链接。eg. target_link_libraries(motionaveraging /home/dz/cnpy/build/libcnpy.so)

其他

  • 变量使⽤${}⽅式取值,但是在 IF 控制语句中是直接使⽤变量名
  • 指令(参数 1 参数 2…) 参数使⽤括弧括起,参数之间使⽤空格或分号分开
  • 指令是⼤⼩写⽆关的,参数和变量是⼤⼩写相关
  • SET(SRC_LIST main.cpp) 可以写成SET(SRC_LIST “main.cpp”),如果源⽂件名中含有空格,就必须要加双引号
  • ADD_EXECUTABLE(hello main) 后缀可以不写,它会⾃动去找.c和.cpp,最好不要这样写,可能会有这两个⽂件main.cpp和main
  • 要创建子目录,则每一个目录下都需要有一个CMakeLists.txt说明

http://www.ppmy.cn/news/526912.html

相关文章

跨 OT 部门管理来自新兴技术的网络风险挑战

本文首发微信公众号网络研究院,关注获取更多。 随着 AI 和自动化工具被引入企业,解决这些新技术(包括 OT 环境中的生成 AI)带来的网络风险需要一种综合方法。 这些新兴技术进步可以在 OT(运营技术)基础设…

一句话说清帧同步(附服务器Golang关键代码,客户端JS关键代码)。

任何对帧同步有疑问的人,都应该来看这篇文章,这是参考了2个帧同步模型,遇到各种问题并一一解决之后,彻底明白帧同步讲的是什么玩意的一篇文章。断断续续修改了将近2个月,说多了都是泪:(。 言归简短,书归正…

Roguelike到底是啥?讲讲和Roguelike 相关知识(搬运)

(搬运自 http://m.sohu.com/a/126992200_483399) (个人觉得可以从Rogue - 一切的开始这里开始往下看_(:з」∠)_) (这篇文章虽然很长,但的确是篇好文章,它里面不仅科普了一些知识,…

秦皇岛 2019 CCPC区域赛 部分代码

Decimal Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 2010 Accepted Submission(s): 894 Problem Description 给定一个正整数 n,要求判断 1n 在十进制下是不是一个无限小数。如果是,输出…

python著作_Python 常用库和著作介绍 ---全能与潮流

2017年最新IEEE世界编程语言排行榜公布,Python高居榜首。 在此之前,Python被广泛应用在web开发、系统运维、数据爬虫、数据分析和游戏服务器开发等,随着人工智能的浪潮,Python以其独特的语法特性和丰富的第三方类库成为了机器学习算法编程的优…

【知识蒸馏】让LSTM重返巅峰!

点击上方,选择星标,每天给你送干货! 来自 | AINLP 原创 作者 | 叶文杰 工作单位 | vivo 深圳AI研究院 NLP技术组 研究方向 | 自然语言处理 个人介绍 | 就读于东南大学二年级,在2020年8月至2021年1月在vivo 深圳AI研究院 NLP技术组…

科普:为什么DOTA2和LOL没有全图挂

转载自:http://www.acfun.cn/a/ac757653 全图挂,也就是可以看到视野外的东西。这个在WAR3中是非常普遍的。这里说一下WAR3,星际2,LOL,dota2这4款游戏的原理,外挂是根据游戏原理的漏洞做的,先说原…

卡尔一键放技能--dota

源地址: http://linger.devhub.com/blog/754274--dota/ 可执行程序和源代码下载地址:http://download.csdn.net/detail/linger2012liu/4029003 卡尔一键放技能 突然间想试试用卡尔这个英雄,毕竟这个英雄技能多比较爽,但不好的是…