CMakeLists.txt文件


cmake_minimum_required(VERSION 3.10)
project(nnb VERSION 1.0)#设置c++标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)#提供一个选项开关,用户可以任意选择。
option(USE_MYMATH "注释文档" ON)#将包含目录添加到构建中
include_directories(pthread/include)#此命令用于查找库。 重
find_library(pthread_lib NAMES pthread PATHS ./pthread)#添加链接器将在其中查找库的目录 。重
link_directories(D:/jiang/cmake/03/pthread/lib/x64)#将文件复制到另一个位置并修改其内容。将参数1复制到参数2
configure_file(TutorialConfig.h.in TutorialConfig.h)#使用指定的源文件向项目添加库。xx生成include2库
#add_library(include2,[SHARED],xx.cpp) # 使用指定的源文件向项目添加可执行文件
add_executable(nb main.cpp)#将pthread_lib 这个变量设置在THIRDPARTY_LIBRARIES 中
set(THIRDPARTY_LIBRARIES ${pthread_lib})#链接外部库。该指令的作用为将目标文件与库文件进行链接。
#第一个参数是通过add_executable()和add_library()指令生成已经创建的目标文件。
#${EXTRA_LIBS}:收集任何可选库
#target_link_libraries(main PUBLIC ${EXTRA_LIBS})
#target_link_libraries(main PUBLIC ${THIRDPARTY_LIBRARIES})#//链接库到可执行文件
#target_link_libraries(main pthreadVC2)#将包含目录添加到目标。
#PROJECT_BINARY_DIR:为项目构建目录的完整路径。
#EXTRA_INCLUDES类似地用于可选的头文件
target_include_directories(nb PUBLIC"${PROJECT_BINARY_DIR}""${EXTRA_INCLUDES}")

主要是这两句:
#此命令用于查找库
find_library(pthread_lib NAMES pthread PATHS ./pthread)

#添加链接器将在其中查找库的目录
link_directories(D:/jiang/cmake/03/pthread/lib/x64)

c++代码

#ifdef USE_MYMATH
#include <TutorialConfig.h>
#endif#include <stdio.h>
#include <pthread.h>
#include <conio.h>#pragma comment(lib, "pthreadVC2.lib")using namespace std;#define NUM_THREADS 5// 线程的运行函数
void* say_hello(void* args)
{printf("\nhello wo hello wo \n");return 0;
}int main()
{// 定义线程的 id 变量,多个变量使用数组pthread_t tids[NUM_THREADS];for (int i = 0; i < NUM_THREADS; ++i){//参数依次是:创建的线程id,线程参数,调用的函数,传入的函数参数int ret = pthread_create(&tids[i], NULL, say_hello, NULL);if (ret != 0){printf("创建线程错误!!");}}//等各个线程退出后,进程才结束,否则进程强制结束了,线程可能还没反应过来;pthread_exit(NULL);getch();
}

vs中的CMakeLists.txt


cmake_minimum_required(VERSION 3.10)
project(01 VERSION 1.0)#设置c++标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)#提供一个选项开关,用户可以任意选择。
option(USE_MYMATH "注释文档" ON)#将包含目录添加到构建中
include_directories(pthread/include)#此命令用于查找库
find_library(pthread_lib NAMES pthread PATHS ./pthread)#添加链接器将在其中查找库的目录
link_directories (D:/jiang/练习代码/多线程/cmake/01/01/pthread/lib/x64)# 使用指定的源文件向项目添加可执行文件
add_executable(01 01.cpp)#将pthread_lib 这个变量设置在THIRDPARTY_LIBRARIES 中
set(THIRDPARTY_LIBRARIES ${pthread_lib})#//链接库到可执行文件。PROJECT_NAME项目名称
target_link_libraries(${PROJECT_NAME} ${pthread})#将包含目录添加到目标。
#PROJECT_BINARY_DIR:为项目构建目录的完整路径。
#EXTRA_INCLUDES类似地用于可选的头文件
target_include_directories(01 PUBLIC"${PROJECT_BINARY_DIR}""${EXTRA_INCLUDES}")

主要是下面这3句代码

#将包含目录添加到构建中
include_directories(pthread/include)

#此命令用于查找库
find_library(pthread_lib NAMES pthread PATHS ./pthread)

#添加链接器将在其中查找库的目录
link_directories (D:/jiang/练习代码/多线程/cmake/01/01/pthread/lib/x64)

cmake添加pthread外部库方法相关推荐

  1. CMake添加pthread.h

    C语言在进行多进程编程的时候,需要手动链接<pthread.h>头文件,下面是在CMakeLists.txt文件里面链接的方法 project(socket) # 工程名add_execu ...

  2. cmake 添加宏_cmake使用方法详解

    CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的 ...

  3. cmake添加系统标准库

    第一次在linux用clion这样的ide,在编译运行的时候遇到了对于 ceil()的未定义引用问题.原因分析:对于c语言标准主要分为两个部分,c语言语法和c语言标准库.在使用一些ide时,未 能帮你 ...

  4. CMake添加QT库是出现Policy CMP0020 is not set“警告解决方法

    CMake添加QT库是出现"Policy CMP0020 is not set"警告解决方法 查阅官方文档https://cmake.org/cmake/help/v3.0/pol ...

  5. cmake使用教程(五)调用opencv外部库和自己生成的库

    这一节是我真正使用时遇到的,就是我需要构建动态库,但是这个动态库依赖外部的一些库如opencv.matlab等,那么若何构建这样的动态库呢?构建好如何测试呢?本篇将详细介绍其过程: 1.ubuntu安 ...

  6. AndroidStudio中添加第三库文件的方法

    一.添加使用.os文件 方法: 在project目录结构下, main文件夹下新建文件夹jniLibs,然后再将.os文件复制到这个文件夹中即可 二.添加jar包的使用方法 首先打开settings设 ...

  7. cmake添加查找目录_CMake如何查找库路径(一)

    CMake如何查找库路径(一) 如果你的代码使用了外部库(external libraries),并且你事先不知道这些库的头文件和库文件在当前平台的位置.那么适当的文件夹路径和库的搜索路径就应该被添加 ...

  8. c语言makecode头文件,cmake 添加头文件目录,链接动态、静态库

    罗列一下cmake常用的命令. CMake支持大写.小写.混合大小写的命令. 1. 添加头文件目录INCLUDE_DIRECTORIES 语法: include_directories([AFTER| ...

  9. VS报错LNK1104原因之:引入外部库文件却没有将其路径添加至main所在项目的链接器的附加库目录

    VS报错LNK1104原因之一:隐式引用外部库文件(无论静态库还是动态库),却没有将其路径添加至main所在项目的链接器. 场景:需要用到外部提供的API,此处用静态库示范,调用方法为隐式调用,即使用 ...

最新文章

  1. c# usercontrol ,networkcomms3.0 Invoke总结
  2. vue 项目引用static目录资源_Vue2.0项目入门 — 静态资源目录src/assets和static/区别...
  3. 使用阿里云ACM简化你的Spring Cloud微服务环境配置管理 1
  4. xml 文件解析 pull
  5. 操作系统基础:存储管理知识笔记(一)
  6. Http 四种请求访问代码 HttpGet HttpPost HttpPut HttpDelete .
  7. 如何远程访问Jetson Xavier/TX2
  8. 百度第三季度研发费用62亿元,同比增长35%,持续高强度研发投入
  9. 虚电路网络和数据报网络
  10. Nginx-搭建https服务器
  11. 记录:添加trace_event埋点并调用
  12. Android短信验证码-使用mob免费版
  13. QCC3005 实现iphone手机banner显示电量图标【续】
  14. android TV for x86,“掌上TV”的第一步,Android TV x86 体验分享
  15. IAP程序升级(全网最全)
  16. Prism4学习笔记(六):UI Composition
  17. 【12306刷票必备!!!】12306订票助手----无所不能的谷歌浏览器chrome插件
  18. 中央处理器cpu中的什么是计算机的指挥中,计算机中央处理器CPU的组成有哪些
  19. 我们来试着解答一下下面的题目(8)(DP/多重部分和)
  20. C#多线程顺序依赖执行控制

热门文章

  1. 怎样把电脑上的歌曲格式转换成MP3格式
  2. Java/Spring/Postman下载文件名称乱码处理
  3. 如何在 IIS 中添加 MIME 类型
  4. 销售管理——怎样判断商机
  5. 斗地主游戏Landlord
  6. linux 设置mysql端口转发_linux使用socat进行端口转发,支持tcp/udp数据转发
  7. h5支付不能打开支付宝 ios_iOS 解决微信h5支付,支付宝h5支付无法直接返回APP的问题...
  8. MATLAB实现三种基本排序(选择+冒泡+插入)
  9. xfs和ext4文件系统大小调整
  10. H5网页Canvas画布绘图 图片文字合成