我的工程目录如下:

│  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. 微服务架构开发电商系统需要用Redis、ES和MQ吗?

    如果不用什么很高大上的东西,就是有多个微服务就行这种技术架构会很难吗? 我看了一些视频,他们都用到了es.mq.redis的东西,我想不用这些东西,就简单的有多个服务,这样可行吗? 01 使用微服务你 ...

  2. 【Azure Developer】使用Microsoft Graph API 批量创建用户,先后遇见的三个错误及解决办法

    问题描述 在先前的一篇博文中,介绍了如何使用Microsoft Graph API来创建Azure AD用户(博文参考:[Azure Developer]使用Microsoft Graph API 如 ...

  3. 如何解决 shell 脚本重复执行的问题

    在开发过程中,经常会使用shell脚本去完成定时备份的任务,普遍的做法是通过系统的定时任务定时执行备份脚本 设想这样一种场景,本次备份时间到了,自动执行备份脚本,如果备份比较耗时的话,会一直持续到下一 ...

  4. RabbitMQ一些实用方法

    https://blog.csdn.net/vbirdbest/article/details/78670550

  5. python双曲线拟合

    待拟合函数 y = alpha * pow(x, beta) 输入: x数组,y数组 输出: alpha,beta,相关系数R2 from scipy.optimize import leastsq ...

  6. 技能Get·BOM头是什么?

    阅文时长 | 0.26分钟 字数统计 | 472.8字符 主要内容 | 1.引言&背景 2.BOM头是什么? 3.如何创建或取消BOM头? 4.如何判断文件是否包含BOM头? 5.声明与参考资 ...

  7. [bug] JavaScript:Uncaught SyntaxError: missing ) after argument list

    function拼写错误

  8. Linux下获取当前的目录,需执行以下命令: $(cd `dirname $0`;pwd)

    Linux下获取当前的目录,需执行以下命令: $(cd `dirname $0`;pwd) 其中,   dirname $0,取得当前执行的脚本文件的父目录       cd `dirname $0` ...

  9. 附: Python爬虫 数据库保存数据

    原文 1.笔记 #-*- codeing = utf-8 -*- #@Time : 2020/7/15 22:49 #@Author : HUGBOY #@File : hello_sqlite3.p ...

  10. OS_FLAG_GRP_DEPLETED

    178 * OS_FLAG_GRP_DEPLETED 系统没有剩余的空闲事件标志组,需要更改OS_CFG.H中 179 * 的事件标志组数目配置创建 标志组的时候返回这个错误 打印出错误代码后发现是1 ...