cmake構建工具 初步01

記錄下cmake學習過程,以后還會補充

  1. 單目錄單文件
    demo1 目錄下只有一個a1.cpp, 如下圖
[root@localhost demo1]# tree
.
├── a1.cpp
└── CMakeLists.txt

編寫CMakeLists.txt

  1 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12)2 3 PROJECT(demo1)4 5 ADD_EXECUTABLE(demo1out a1.cpp)

命令行執行 cmake CMakeLists.txt, 會形成

CMakeCache.txt  CMakeFiles  cmake_install.cmake    Makefile

命令行執行make,就會編譯出可執行文件demo1out

  1. 單目錄多文件
    目錄結構如圖:
[root@localhost demo2]# tree
.
├── a1.cpp
├── CMakeLists.txt
├── p1.cpp
└── p1.h

編寫CMakeLists.txt,

  1 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12)2 3 PROJECT(demo2)4 #發現一個目錄下所有的源代碼文件并將列表存儲在一個變量中,把當前目錄下的所有源碼文件名賦給變量SOURCE_DIR_15 AUX_SOURCE_DIRECTORY(./ SOURCE_DIR_1) 6 7 ADD_EXECUTABLE(demo2out ${SOURCE_DIR_1})
  1. 多目錄多文件
    a1.cpp 要使用 testlib目錄下的文件編譯成的靜態庫
[root@localhost demo3]# tree
.
├── a1.cpp
└── testlib├── p1.cpp└── p1.h

先編寫子目錄testlib里面的CMakeLists.txt

root@localhost demo3]# tree
.
├── a1.cpp
├── CMakeLists.txt
└── testlib├── CMakeLists.txt├── p1.cpp└── p1.h

1)demo3/testlib/CMakeLists.txt

 1 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12)2 3 AUX_SOURCE_DIRECTORY(./ SOURCE_DIR_1)4 5 ADD_LIBRARY(plib ${SOURCE_DIR_1})#默認生成靜態庫吧

2)demo3/CMakeLists.txt

  1 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12)2 3 PROJECT(demo3)4 5 ADD_SUBDIRECTORY(./testlib) #添加子目錄路徑6 INCLUDE_DIRECTORIES(./testlib) #添加頭文件路徑7 AUX_SOURCE_DIRECTORY(./ SOURCE_DIR)8 9 ADD_EXECUTABLE(demo3out ${SOURCE_DIR})10 11 TARGET_LINK_LIBRARIES(demo3out plib) #鏈接庫

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/382413.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/382413.shtml
英文地址,請注明出處:http://en.pswp.cn/news/382413.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Mysql5.7后的password加密和md5

5.7之后 password函數舊版16位,新版41位,可用select password(‘123456’)查看。md5加密算法,只有16位和32位兩種 authentication_string 且5.7之后移除了password,它采用了新的算法 5.7之前 mysql> select user,host,pas…

用python寫的簡單的http文件服務器demo

import socket import os import re import time from multiprocessing import Processclass CHttpServer(object):"""Httpserver服務端類"""def __init__(self):self.m_serverSocket socket.socket(socket.AF_INET,socket.SOCK_STREAM)self.m_…

從《四驅兄弟》到“聯想中國”

《四驅兄弟》 小學的時候看過一個日本的動畫片叫四驅兄弟,里面就是一群小朋友代表國家各種比賽,其中讓我象比較深刻的是他把美國隊描述的非常邪惡,各種破壞別人的車子,通過卑鄙手段取得勝利。然后最后好像是正義戰勝邪惡的劇情還…

Mac SecureCRT解決中文亂碼

下載地址 https://xclient.info/s/navicat-premium.html#versions SecureCRT解決中文亂碼問題 在設置中設置為utf-8之后,還需要 $ sudo vi /etc/profile $打開文件,最后一行添加export LANGzh_CN.UTF-8

音視頻之使用sonic.cpp實現音頻倍速播放功能

sonic.cpp 是一個音頻處理庫,可以實現倍速播放。 如果單純通過修改pcm的采樣率來實現音頻倍速播放的話,就會出現聲音變調的情況。 以下是通過采集windows 虛擬聲卡獲取到的音頻數據, 我的聲卡采樣率是44100次/秒,audio_buffer_si…

SecurtCRT連接服務器自動斷開

mac Terminal-->Anti-idle-->send protocol NO-OP 60勾中

位圖原理、代碼實現及應用實例

位圖的原理: 在位圖中采用比特位表示對應的元素存在或者不存在 0:不存在 1:存在例如一個int整數有32個比特位可以表示0-31個整數。 再舉一個例子 存入的數字為8988 首先: 8988/32 280 其次: 8988%32 28 再來一個例…

通過修改注冊表,實現網頁鏈接中的私有協議啟用本地exe進程

私有協議為 coffeeclass://xxxxxx.mp4 注冊表如下 Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\coffeeclass] "coffeeClass Protocol" "URL Protocol"""[HKEY_CLASSES_ROOT\coffeeclass\DefaultIcon] "D:\\Program Files (x…

布隆過濾器的原理、應用場景和源碼分析實現

原理 布隆過濾器數據結構 布隆過濾器是一個 bit 向量或者說 bit 數組,長這樣: 如果我們要映射一個值到布隆過濾器中,我們需要使用多個不同的哈希函數生成多個哈希值,并對每個生成的哈希值指向的 bit 位置 1。 例如針對值 “baid…

判斷一個數字是否存在于某一個數據之中

哈希表 這個沒啥說的,后面補充 位圖 https://blog.csdn.net/csdn_kou/article/details/95337121 布隆過濾器 哈希表位圖 https://blog.csdn.net/csdn_kou/article/details/95371085

根據語句自動生成正則表達式

自動生成 http://www.txt2re.com 速查手冊 https://www.jb51.net/shouce/jquery/regexp.html

免密登錄堡壘機和服務器

免密登錄堡壘機 安裝oathtool和sshpass 這兩個文件安裝比較耗費時間! brew install oath-toolkit brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb免密登錄堡壘機 書寫shell腳本 #!/usr/bin/env bash …

mysql建表sql

mysql建表 文章目錄mysql建表mysql學生表插入數據建表,學生和idgroup byinner joinmysql學生表 CREATE TABLE courses ( id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 自增id, student VARCHAR(255) DEFAULT NULL COMMENT 學生, class VARCHAR(255) DEFAU…

Effective C++學習第一天

1:區分C中的術語聲明、定義、初始化的概念聲明(declaration):告訴編譯器某個東西的名稱和類型,但略去其他細節(可以出現多次,編譯器不分配內存)。定義(definition&#x…

Redis運維和開發學習筆記(1) Redis簡介

文章目錄Redis的特性速度快持久化多種數據結構主從復制高可用和分布式典型的應用場景Redis啟動和可執行文件Redis可執行文件說明啟動方式驗證redisredis常用配置redis數據結構和內部編碼Redis是單線程,不會同時執行兩條命令哈希慢查詢pipelineRedis的特性 速度快 …

Effective C++學習第二天

1:確保對象被使用前已先被初始化,讀取未初始化的值會造成不明確的行為,可能導致程序終止運行或者其他不可預期的現象;在C中,當你使用C part of C(C中C語言部分的內容)且初始化可能導致運行期成本&#xff0…

Redis運維和開發學習筆記(3)redis搭建集群

Redis運維和開發學習筆記(3)redis搭建集群 文章目錄Redis運維和開發學習筆記(3)redis搭建集群Redis集群搭建Redis集群搭建 cp /etc/redis.d/redistest_7001.conf /etc/redis.d/redistest_XXXX.conf :%s/7001/xxxx/g 配置文件內容:cluster-enabled yes ############…

Effective C++學習第三天

1:為多態基類聲明virtual析構函數當我們創建一個base class指針指向新生成的derived class時,當刪除基類指針時,如果base class是一個non-virtual析構函數時,實際執行的結果通常是derived class中的base成分被銷毀,der…

linux創建指定大小的文件

一、生成文件大小和實際占空間大小一樣的文件 dd if/dev/zero ofname.file bs1M count1 文件名稱name.file bs1M表示每一次讀寫1M數據,count50表示讀寫 50次,這樣就指定了生成文件的大小為50M。 二、生成文件大小固定,但實際不占空間命令 …

Effective C++學習第四天

條款11:在operator中處理自我賦值的現象雖然我們在平時可能不會出現顯示自我賦值的現象,當加入指針或者引用時,可能會出現不同的指針或引用指向同一對象(對象的不同別名),這時候我們就得考慮對象是否是同一…