我的工程目录如下:

│  CMakeLists.txt
├─cmake_tutorial
│ CMakeLists.txt
│ cmake_tutorial.cpp
│ cmake_tutorial.h

└─src
│ main.cc

├─bundle_sort
│ bundle_sort.cc
│ bundle_sort.h
│ CMakeLists.txt

└─common
CMakeLists.txt
declarations.h
tools.cc
tools.h
utils.cc

顶层的CMakeList解释如下:

# CMakeList.txt: 顶层 CMake 项目文件,在此处执行全局配置
# 并包含子项目。
# set(CMAKE_CXX_FLAGS "-std=c++11") # c++11
cmake_minimum_required (VERSION 3.8) project ("cmake_tutorial") #下面是编译选项,debug和Release模式的判断,需要注意的是关键字OR必须要大写
IF (CMAKE_BUILD_TYPE MATCHES "Debug" OR CMAKE_BUILD_TYPE MATCHES "DEBUG")
SET(COMPILE_FLAGS "-w -O0 -g3")
message("Debug mode")
ELSE()
SET(COMPILE_FLAGS "-w -O3 -g")
message("Release mode")
ENDIF() # 把src里面的内容加入到SRC_DIR变量里面,注意,这个是从左到右的
aux_source_directory("./src" SRC_DIR) # 执行shell命令,并把输出存到OUTPUT_VARIABLE指定的变量中
#execute_process(
# COMMAND bash -c "mysql_config --libs_r"
# OUTPUT_VARIABLE mysql_config_output
#) # 如果增加多个源文件,那么这样写即可,自动会进行追加
#aux_source_directory("./src/common" SRC_DIR) # .h文件的位置,相当于gcc编译里面的-I选项
#include_directories("./src" "./src/main") # 需要链接的库文件目录,这里是目录,类似于LD_LIBRARY_PATH的作用,eg:LINK_DIRECTORIES("/opt/MATLAB/R2012a/bin/glnxa64")
#link_directories() # 需要链接的库文件路径,注意,这里是全路径. eg: LINK_LIBRARIES("/opt/MATLAB/R2012a/bin/glnxa64/libeng.so")
# 注意和target_link_libraries的区别
#link_libraries() # 包含子项目,子项目里面可能包含CMakeLists.txt文件,处理新的cmake
add_subdirectory("./src/bundle_sort")
add_subdirectory("./src/common") # 相当于生成最后的一个可运行文件
add_executable(Cmake ${SRC_DIR}) # 增加编译选项
#add_definitions("-Wall -ansi") # 专门用来打印消息的命令
#message("hello world. This is a print message!") # 链接静态库
target_link_libraries(Cmake bundle_sort common)
# 连接静态库也可按照下面的方式书写
#target_link_libraries(tpcc_start -lrt -L/usr/local/mysql/lib -lmysqlclient -lpthread -lm -lssl -lcrypto -ldl) # make install命令,表示将target Cmake二进制文件安装到SOURCE目录下(当然,实际不推荐这么做)
#install(TARGETS Cmake
# RUNTIME DESTINATION ${CMAKE_SOURCE_DIR})

cmake使用笔记,一些常用的命令的更多相关文章

  1. Android学习笔记_60_Android常用ADB命令

    第一部分: 1. ubuntu下配置环境anroid变量: 在终端执行 sudo gedit /etc/profile 打开文本编辑器,在最后追加#set android environment 2. ...

  2. (笔记)常用Llinu命令(一)

    Linux资源 鸟哥Linux:http://linux.vbird.org/linux_basic/ Linux命令大全:https://man.linuxde.net/ 目录切换 cd usr: ...

  3. 常用Linux命令笔记

    任何脱离业务的架构都是耍流氓 只记录实际常用的Linux命令 常用Linux命令 查找安装路径: whereis nginx 查询nginx进程: ps aux|grep nginx 查看 CentO ...

  4. git学习笔记:常用命令总结

    本文根据廖雪峰的博客,记录下自己的学习笔记.主要记录常用的命令,包括仓库初始化.添加文件.提交修改.新建分支.内容暂存.分支管理.标签管理等内容. git是分布式版本控制系统. 首先是安装,从官网下载 ...

  5. 学习笔记:oracle学习二:oracle11g数据库sql*plus命令之常用sqlplus命令、格式化查询结果

    目录 1.常用sqlplus命令 1.1 HELP命令 1.2 describe命令 1.3 SPOOL命令 1.4 其他常用命令 1.4.1 define命令 1.4.2 show命令 1.4.3 ...

  6. Linux学习笔记:常用命令grep、iconv、cp、mv、rm

    本篇记录一些近期常用的命令. 一.grep过滤 grep过滤 不包含某些字符串 cat test.txt | grep -v '.jpg' 过滤jpg结尾的图片 cat test.txt | grep ...

  7. CMake学习笔记三:cmake 常用指令

    1 基本指令 1,ADD_DEFINITIONS 向 C/C++编译器添加-D 定义,比如: DD_DEFINITIONS(-DENABLE_DEBUG -DABC),参数之间用空格分割. 如果你的代 ...

  8. 嵌入式Linux应用开发完全手册读书笔记——常用的命令

    嵌入式开发中常用的命令 grep命令 用法:grep [option] PATTERN [FILE...] 例如: 在内核目录下查找包含"request_irq"字样的文件 gre ...

  9. Docker 使用笔记-常用基础命令

    常用基础命令 环境:Linux Ubuntu 1.查看docker信息 docker version | docker info 2.启动docker服务 sudo systemctl start d ...

  10. Nginx 笔记(二)nginx常用的命令和配置文件

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.nginx常用的命令 (1)启动命令 在/usr/local/nginx/sbin 目录下执行 ./ ...

随机推荐

  1. Mybatis学习之自定义持久层框架(六) 自定义持久层框架:完善CRUD方法并进行测试

    前言 没想到会等到半年以后才来写这篇文章,我已经不记得当初自己想要在这篇文章中写什么了,还好有一些零散的笔记留着,就对照着上一篇文章及零散的笔记,把内容给补充完吧. 完善CRUD方法 完善Defaul ...

  2. JavaWeb——反射、注解

    单元测试.反射.注解 1. Junit单元测试 2. 反射 3. 注解 Junit单元测试: * 测试分类: 1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值. 2. 白盒测试:需要 ...

  3. 『政善治』Postman工具 — 11、Postman中对Cookie的操作

    目录 1.关联接口说明 2.测试关联接口实现步骤 3.补充:Postman中将请求转换成代码 上一篇文章说明了Postman中关于Cookie的相关操作,还是以Cookie举例,来说明下一在Postm ...

  4. 测试报告$\beta$

    VisualPytorch beta发布了! 功能概述:通过可视化拖拽网络层方式搭建模型,可选择不同数据集.损失函数.优化器生成可运行pytorch代码 扩展功能:1. 模型搭建支持模块的嵌套:2. ...

  5. 从effective C++中窥探C++11特性

    这几天在看effective C++3rd,这本书算是比较经典的一本入门C++的书了.虽然年代比较久远书中讲的好多模式已经被的新特性取代了,但是从这些旧的模式中可以了解到一些C++新特性设计的初衷,也 ...

  6. SpringBoot中获取上下文

    在实际开发中,有时候会根据某个bean的名称或class到Spring容器中获取对应的Bean.这里只做个简单的记录,方便后续自查. @Component public class SpringCon ...

  7. linux-TCP多线程的并发服务器- 以言责人甚易,以义持己实难!!!

    1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <ti ...

  8. Java GUI学习,贪吃蛇小游戏

    JAVA GUI练习 贪吃蛇小游戏 前几天虽然生病了,但还是跟着狂神学习了GUI的方面,跟着练习了贪吃蛇的小项目,这里有狂神写的源码点我下载,还有我跟着敲的点我下载,嘿嘿,也就注释了下重要的地方,这方 ...

  9. VS·调试过程中某个操作导致调试突然退出之解决方案

    阅文时长 | 0.11分钟 字数统计 | 232字符 主要内容 | 1.引言&背景 2.声明与参考资料 『VS·调试过程中某个操作导致调试突然退出之解决方案』 编写人 | SCscHero 编 ...

  10. Windows系统下consul的安装、启动、配置

    阅读时长:3分钟 操作系统:Windows10 一.consul的安装 首先在consul.exe文件目录下的地址栏中输入cmd. 接着输入consul指令,敲击回车安装consul. 安装成功后会有 ...