cmake工程目录结构

我这里所说的工程目录结构其实就是哪些文件叫什么名字,什么文件放到什么文件夹下。当然这只是我自己的爱好,你也可以探索自己的风格。下图是我的工程目录结构:

lib: 生成的库文件
src: 源文件(.cpp .cc)
include: 头文件(.h .hpp)
build: 一般在这个文件夹下执行cmake ..(..之前有一个空格,表示你要使用的CMakeLists.txt文件在当前的上层路径),生成的Makefile文件也在这个路径下。
bin: 一般放生成的可执行文件
CMakeLists.txt: cmake的配置文件,关于配置文件怎么写的教程(http://blog.csdn.net/kaizi318/article/details/7721624)

我的CMakeLists.txt是这样写的:

#井好表示注释
CMAKE_MINIMUM_REQUIRED( VERSION 2.8 ) #设定最小版本号
PROJECT( test ) #设定工程名 SET(CMAKE_CXX_COMPILER "g++") #设置编译器(可选的有gcc,g++) # 设置用debug还是release模式。debug允许断点,而release更快 #set( CMAKE_BUILD_TYPE Debug ) set( CMAKE_BUILD_TYPE Release ) # 设置编译选项 # 允许c++11标准、O3优化、多线程。match选项可避免一些cpu上的问题 set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -march=native -O3 -pthread" ) #设定可执行二进制文件的目录 SET( EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) #设定存放编译出来的库文件的目录 SET( LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) #并且把该目录设为连接目录 LINK_DIRECTORIES( ${PROJECT_SOURCE_DIR}/lib)# find_package (Threads REQUIRED) #设定头文件目录 INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/include) #增加子文件夹(注意我们的src路径是通过子文件夹的形式添加的,在这里面也是可以些CMakeLists.txt的) ADD_SUBDIRECTORY( ${PROJECT_SOURCE_DIR}/src)或则是ADD_SUBDIRECTORY( src)

多线程

进程是分配资源的基本单位,线程是轻量级的进程,为什么是轻量级的,因为线程是依附进程而存在的,共享进程的资源,线程之间切换比进程切换更加快速。
教程链接1http://www.runoob.com/cplusplus/cpp-multithreading.html
教程链接2http://www.cnblogs.com/haippy/p/3284540.html

新建src/CMakeLists.txt

##src/CMakeLists.txt
ADD_EXECUTABLE( main  main.cpp )ADD_LIBRARadd_library( mythread SHARED    main.cpp)

新建src/main.cpp

//src/main.cpp
#include<iostream>
#include<pthread.h>
#include<unistd.h>  using namespace std;
__thread int i = 1; void* thread1(void* arg); void* thread2(void* arg); int main() { pthread_t pthread1; pthread_t pthread2; pthread_create(&pthread1, NULL, thread1, NULL); pthread_create(&pthread2, NULL, thread2, NULL); pthread_join(pthread1, NULL); pthread_join(pthread2, NULL); return 0; } void* thread1(void* arg) { cout<<++i<<endl; //输出 2 return NULL; } void* thread2(void* arg) { sleep(1); //等待thread1完成更新 cout<<++i<<endl; //输出 2,而不是3 return NULL; }

需要特别解释的是:__thread是gcc,g++内置的用于多线程编程的基础设施。用__thread修饰的变量,每个线程都拥有一份实体,相互独立,互不干扰

最后进入build路径,执行下面命令:

$ cmake ..
$ make
$ ../bin/main

转载自http://blog.csdn.net/world_hope/article/details/50611261

转载于:https://www.cnblogs.com/jiqin/p/7275545.html

c++多线程 CMakeLists设置相关推荐

  1. java多线程如何设置优先级

    从thread类中,我们可以看到类中预先定义了三个优先级. 通过getpriority可以看到新建线程的默认等级. public class ExtendsThread {public static ...

  2. linux多线程学习设置线程调度权限

    pthread_setschedparam 设置线程的权限 int pthread_setschedparam(pthread_t target_thread, int policy, const s ...

  3. 利用多线程句柄设置鼠标忙碌状态

    当我们在读取数据的时候,或者处理大量数据的时候可能需要把鼠标设置为忙碌状态,等待返回结果.下面的代码可以帮忙实现这点: using System; using System.Collections.G ...

  4. rabbitMq设置多线程并设置线程池消费处理

    第一步,先写配置 @Configuration public class RabbitmqConfig {@Bean("batchQueueRabbitListenerContainerFa ...

  5. Java多线程:设置和获取线程名称

    文章目录 设置和获取线程名称 API介绍 综合案例 设置和获取线程名称 API介绍 我们可以通过调用设置线程名称的API进行设置 方法名 说明 void setName(String name) 将此 ...

  6. Intel MKL 多线程设置

    对于多核程序,多线程对于程序的性能至关重要. 下面,我们将对Intel MKL 有关多线程方面的设置做一些介绍: 我们提到MKL 支持多线程,它包括的两个概念: 1>MKL 是线程安全的: MK ...

  7. 关于MKL库的多线程设置

    对于多核程序,多线程对于程序的性能至关重要. 下面,我们将对Intel MKL 有关多线程方面的设置做一些介绍: 我们提到MKL 支持多线程,它包括的两个概念: 1>MKL 是线程安全的: MK ...

  8. Tensorflow并行计算:多核(multicore),多线程(multi-thread),计算图分割(Graph Partition)

    Github下载完整代码:https://github.com/rockingdingo/tensorflow-tutorial/tree/master/mnist 目录 简介 一.多核并行:CPU多 ...

  9. Java并发相关知识(多线程、锁、容器、工具)

    目录 一.基础知识 线程之间如何通信? Java内存模型 内存屏障 顺序一致性 CAS实现原理 原子操作 volatile synchronized 实现原理 什么是锁 原子操作类说明 高性能原子类 ...

最新文章

  1. 如何只使用预训练模型的卷积层
  2. 机器人整机主要产品规格参数
  3. CSS3 选择前几个元素 选择后几个元素等问题
  4. 真实世界:使用WCF扩展记录服务调用时间
  5. jQuery事件绑定函数:on()与bind()的差别
  6. vba 添加outlook 签名_利用VBA发送附件电子邮件
  7. EasyUI DataGrid 可编辑列级联操作
  8. 汉语中的通用量词:个,块
  9. 代码雨代码源复制_黑色帝国中代码雨如何实现?用python就可以了
  10. windows 一键切换ip dns脚本
  11. Seata分布式事务原理
  12. 怎么更改计算机信息,修改电脑oem信息的方法 如何修改oem电脑配置信息
  13. Mac手动关闭暗黑模式
  14. 东沃电子:瞬态电压抑制二极管选型指南
  15. RPA机器人技术一般用于什么行业?
  16. php 生成指定长度字符串
  17. 网易云课堂Web安全工程师课程分享——第二章 Web开发基础知识
  18. layout_centerVertical=true用法
  19. Win7计划任务命令
  20. php实现文件遍历,php ---- 文件遍历

热门文章

  1. “对立论”主要着眼于人工智能技术与人类权利和福祉之间的对立冲突
  2. Python使用matplotlib完成绘制y1=sin(x),y=sin(cos(x^2)+x^3)的函数曲线
  3. 为什么lol计算机内存不足怎么办,win7玩LOL英雄联盟提示“内存不足”怎么处理?(图文)...
  4. php可以用百度云加速吗,百度云加速免费版CDN使用方法(图文)
  5. 计算机找不到指纹登陆,Win10电脑上登陆选项没有PIN码和指纹设置的解决教程
  6. 小米、腾讯齐升空 无人机产业隐患多
  7. Pebble/RocksDB SST 文件详解
  8. CF4A Watermelon(洛谷水题记)
  9. Linux内核完全注释 阅读笔记:2.4、控制器和控制卡
  10. java for 获取索引_获取Java列表中的对象索引