码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Linux下C++开发笔记--CMakeLists.txt重要指令和CMake常用变量


    目录

    1--CMakeLists.txt重要指令:

    ① cmake_minimum_required-指定CMake的最低版本要求:

    ② project-定义项目工程名称:

    ③ set-显式地定义变量(可用于表示特定路径):

    ④ include_directories-指定特定头文件的搜索路径:

    ⑤ link_directories-指定特定库文件的搜索路径:

    ⑥ add_library-生成库文件:

    ⑦ add_compile_options-添加编译参数:

    ⑧ add_executable-生成可执行文件:

    ⑨ target_link_libraries-指定链接的共享库:

    ⑩ add_subdirectory-添加源文件的子目录:

    ⑪ aux_source_directory-将目录下所有源文件列表存储在变量中:

    2--CMake常用变量

    ① CMAKE_C_FLAGS

    ② CMAKE_CXX_FLAGS

    ③ CMAKE_BUILD_TYPE

    ④ CMAKE_BINARY_DIR、PROJECT_BINARY_DIR和_BINARY_DIR

    ⑤ CMAKE_SOURCE_DIR、PROJECT_SOURCE_DIR和_SOURCE_DIR

    ⑥ CMAKE_C_COMPILER

    ⑦ CMAKE_CXX_COMPILER

    ⑧ EXECUTABLE_OUTPUT_PATH

    ⑨ LIBRARY_OUTPUT_PATH

    3--CMake编译流程

    4--参考


    1--CMakeLists.txt重要指令:

    ① cmake_minimum_required-指定CMake的最低版本要求:

    1. # 指定CMake的最低版本要求为2.8.3
    2. cmake_minimum_required(VERSION 2.8.3)

    ② project-定义项目工程名称:

    1. # 定义项目名称为Test
    2. project(Test)

    ③ set-显式地定义变量(可用于表示特定路径):

    1. # 定义SRC变量,其值为Test1.cpp
    2. set(SRC Test1.cpp)

    ④ include_directories-指定特定头文件的搜索路径:

    1. # 将/usr/include/myincludefolder 和 ./include 添加到头文件搜索路径
    2. include_directories(/usr/include/myincludefolder ./include)

    ⑤ link_directories-指定特定库文件的搜索路径:

    1. # 将/usr/lib/mylibfolder 和 ./lib 添加到库文件搜索路径
    2. link_directories(/usr/lib/mylibfolder ./lib)

    ⑥ add_library-生成库文件:

    注:动态使用SHARED,静态使用 STATIC

    1. # 通过变量 SRC 生成 libhello.so 共享库
    2. add_library(hello SHARED ${SRC})

    ⑦ add_compile_options-添加编译参数:

    1. # 添加编译参数 -Wall -std=c++11 -O2
    2. add_compile_options(-Wall -std=c++11 -O2)

    ⑧ add_executable-生成可执行文件:

    1. # 编译main.cpp生成可执行文件main
    2. add_executable(main main.cpp)

    ⑨ target_link_libraries-指定链接的共享库:

    1. # 将hello动态库文件链接到可执行文件main
    2. target_link_libraries(main hello)

    ⑩ add_subdirectory-添加源文件的子目录:

    1. # 添加src子目录,src中需有一个CMakeLists.txt
    2. add_subdirectory(src)

    ⑪ aux_source_directory-将目录下所有源文件列表存储在变量中:

    1. # 定义SRC变量,其值为当前目录下所有的源代码文件
    2. aux_source_directory(. SRC)
    3. # 编译SRC变量所代表的源代码文件,生成main可执行文件
    4. add_executable(main ${SRC})

    2--CMake常用变量

    ① CMAKE_C_FLAGS

    表示:gcc编译选项

    ② CMAKE_CXX_FLAGS

    表示:g++编译选项

    ③ CMAKE_BUILD_TYPE

    表示:编译类型(Debug、Release)

    ④ CMAKE_BINARY_DIR、PROJECT_BINARY_DIR和_BINARY_DIR

    表示:三个变量指代内容一致,如果是in source build则表示工程顶层目录,如果是out-of-source编译则表示工程编译发生的目录。

    ⑤ CMAKE_SOURCE_DIR、PROJECT_SOURCE_DIR和_SOURCE_DIR

    表示:表示工程顶层目录

    ⑥ CMAKE_C_COMPILER

    表示:指定C编译器

    ⑦ CMAKE_CXX_COMPILER

    表示:指定C++编译器

    ⑧ EXECUTABLE_OUTPUT_PATH

    表示:可执行文件的输出路径

    ⑨ LIBRARY_OUTPUT_PATH

    表示:库文件的输出路径

    3--CMake编译流程

    ① 编写CMakeLists.txt

    ② 执行 cmake PATH 命令生成Makefile

    注:PATH为顶层CMakeLists.txt所在的目录

    ③ 执行make命令进行编译

    4--参考

    基于VSCode和CMake实现C/C++开发 | Linux篇

  • 相关阅读:
    青少年python系列 25.turtle库绘制一个田字方格的方框
    React-Hooks源码深度解读
    六.Linux远程登录
    C++DAY 结构体·结构体与函数
    怎么优化Web网站性能
    Python中的copy和deepcopy
    金仓数据库 KingbaseGIS 使用手册(8.12. 栅格运算符、8.13. 栅格和栅格波段空间关系函数)
    HBase Compaction 原理与线上调优实践
    谁说爬虫只能Python?看我用C#快速简单实现爬虫开发和演示!
    Neo4j入门实战
  • 原文地址:https://blog.csdn.net/weixin_43863869/article/details/128042731
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号