单个源文件

  

# CMake 最低版本号要求
cmake_minimum_required (VERSION 3.11) # 项目信息
project (Demo) # 指定生成目标
add_executable(Demo main.cc)

cmake_minimum_required:指定运行此配置文件所需的 CMake 的最低版本;

project:参数值是 Demo,该命令表示项目的名称是 Demo。

add_executable: 将名为 main.cc 的源文件编译成一个名称为 Demo 的可执行文件

同一目录,多个源文件

  

# CMake 最低版本号要求
cmake_minimum_required (VERSION 3.11) # 项目信息
project (Demo) # 查找当前目录下的所有源文件
# 并将名称保存到 DIR_SRCS 变量
aux_source_directory(. DIR_SRCS) # 指定生成目标
add_executable(Demo ${DIR_SRCS})
#或者:add_executable(Demo main.cc math_function.cc math_function.h)

aux_source_directory: 查找指定目录下的所有源文件,然后将结果存进指定变量名.

多个目录,多个源文件

  

  • Demo目录下的CMakeLists.txt
# CMake 最低版本号要求
cmake_minimum_required (VERSION 3.11) # 项目信息
project (Demo) # 查找当前目录下的所有源文件
# 并将名称保存到 DIR_SRCS 变量
aux_source_directory(. DIR_SRCS) # 添加 math 子目录
add_subdirectory(math) # 指定生成目标
add_executable(Demo ${DIR_SRCS}) # 添加链接库
target_link_libraries(Demo MathFunctions)
  • math目录下的CMakeLists.txt
# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_LIB_SRCS 变量
aux_source_directory(. DIR_LIB_SRCS) # 生成链接库,库名为MathFunctions
add_library (MathFunctions ${DIR_LIB_SRCS})

add_subdirectory:指明本项目包含一个子目录 math,这样math目录下的文件才会被处理 

target_link_libraries指明可执行文件 main 需要连接一个名为 MathFunctions 的链接库。

Notepad案例

  

  • ./Notepad/CMakeLists.txt
cmake_minimum_required(VERSION 3.11)

PROJECT (Notepad)

# Require "qa" and "xml" for debug report.
if(MSVC)
find_package(wxWidgets REQUIRED COMPONENTS core base qa xml)
else()
# Require "net" for create server/client between two instances.
find_package(wxWidgets REQUIRED COMPONENTS core base net qa xml)
endif() include(${wxWidgets_USE_FILE}) set(Boost_USE_STATIC_LIBS ON) find_package(Boost) if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
endif() include_directories(${PROJECT_SOURCE_DIR}/src) add_subdirectory(src)
  • ./Notepad/src/CMakeLists.txt
add_subdirectory(notepad)
  • ./Notepad/src/notepad/CMakeLists.txt
aux_source_directory(. DIR_SRCS)

set(TARGET_NAME notepad)

add_executable(${TARGET_NAME} WIN32 ${DIR_SRCS})

target_link_libraries(${TARGET_NAME} ${wxWidgets_LIBRARIES})

CMake 案例的更多相关文章

  1. CMake系列之二:入门案例-单个源文件

    编写一个源码文件 如下 #include<stdio.h> #include<stdlib.h> double power(double base,int exponent) ...

  2. CMake 教程

    CMake是一个跨平台的程序构建工具,比如起自己编写Makefile方便很多. 介绍:http://baike.baidu.com/view/1126160.htm 本文件不介绍CMake的基本语法, ...

  3. qt cmake

    写在前面的话:强烈建议优先阅读Qt官网文档对cmake的使用介绍——CMake Manual 前言我去年用clion写Qt的时候,找了很多教程,也没有什么让我觉得很满意的.后来自己摸索,构建了一个我自 ...

  4. CMake 入门实战【转】

    本文转载自:http://www.hahack.com/codes/cmake/ 什么是 CMake All problems in computer science can be solved by ...

  5. CMake的含义和用法解读

    什么是 CMake 你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MS nmake,BSD Make(pmake),Makepp,等等.这些 Make 工 ...

  6. 使用visual studio配置和运行《opengl圣经》的第一个案例

    对vc++新手来说,想把opengl圣经里的教学案例运行起来还真不是一件容易的事情,而且并没有完整的操作流程教学,这里就总结一下吧: 先安装cmake,用于生成vs的工程文件,安装过程中选中“将目录添 ...

  7. C++ CMake 入门实战[转载]

    C++ CMake 入门实战 2016-11-05 CMake用于跨平台的编译系统,对于通常的c/c++工程,都是通过make来进行编译的,CMake可以通过指令生成Makefile文件来指导整个项目 ...

  8. zabbix生产环境案例(三)

    生产环境案例(三) 链接:https://pan.baidu.com/s/1q5YwJMTcZLcS5OQ0iOu44A 提取码:8gdi 复制这段内容后打开百度网盘手机App,操作更方便哦 1. Z ...

  9. 2020BUAA-个人博客-案例分析

    个人博客作业-软件案例分析 项目 内容 北航2020软工 班级博客 作业要求 具体要求 我的课程目标 通过案例分析提升自己对于软件工程的认识 课程收获 分析软件,了解软件的定位 第一部分 调研,评测( ...

随机推荐

  1. Python基础_内置函数

        Built-in Functions     abs() delattr() hash() memoryview() set() all() dict() help() min() setat ...

  2. Homebrew -- 安装与使用

    使用 React Native,必须安装的依赖有:Node.Watchman 和 React Native 命令行工具以及 Xcode. 推荐使用Homebrew来安装 Node 和 Watchman ...

  3. Scrum立会报告+燃尽图(Final阶段第二次)

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2481 项目地址:https://coding.net/u/wuyy694 ...

  4. 团队博客作业week1——成员介绍

    我们小组的成员由六人组成,其中包括一名七班的韩国同学. 1.玉钟焕同学 玉钟焕是七班的同学.由于老师为了让我们尽早体验与不熟悉的同学共同工作的环境而提出团队需要跨行政班.于是我们便邀请钟焕同学加入我们 ...

  5. Class 1

    “在最艰苦的时候,就是你离成功最近的时候”,让暴风雨来得更猛烈些吧. 健身教练/学员,买的那本Java Web还是那么新,显然假期偷懒了,只能一点一点的补回来了.一个假期没有打开过自己的脑洞,真心醉了 ...

  6. 优化Hibernate所鼓励的7大措施:

    优化Hibernate所鼓励的7大措施: 1.尽量使用many-to-one,避免使用单项one-to-many 2.灵活使用单向one-to-many 3.不用一对一,使用多对一代替一对一 4.配置 ...

  7. java下Mysql基本操作

    https://www.cnblogs.com/centor/p/6142775.html

  8. 13种细分类型的TCP重传小结(一张表总结4.4内核所有TCP重传场景)

    具体每种重传类型的wireshark示例解说参考前文 来自为知笔记(Wiz)

  9. Selenium_IDE的基本使用及脚本解析

    Selenium确实还是很强大的.根据我以往的经验,这个东西在web测试里的作用还是相当大的.经过近期研究,暂时对基本运作方式有了一定了 解,依旧找个实例记录一下.本段脚本实现的是网易返现个人中心登录 ...

  10. requests爬取豆瓣热门电视剧

    # *_*coding:utf-8 *_* import requests payload = {'key1': 'value1', 'key2': 'value2'} headers = {'use ...