一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

cmake學(xué)習(xí)的總結(jié)(一)

電子設(shè)計(jì) ? 來源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2020-12-24 18:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

大家晚上好,在這里祝大家端午安康。今天給大家分享的是工程管理工具cmake,沒有先介紹makefile工程管理工具(坦白來說,這兩者都差不多,cmake最終還是會(huì)生成Makefile的,只是說cmake語法稍微比較簡(jiǎn)單一些,沒有Makefile那么復(fù)雜!)。就自己個(gè)人經(jīng)歷,現(xiàn)在一般公司去寫Makefile和cmake的比較少(當(dāng)然去招聘網(wǎng)站上,有的時(shí)候還是可以看到有這個(gè)技能要求會(huì)寫的,所以說能夠自己寫出來是最為完美的?。?,一般都是直接使用廠家的Makefile或者Cmake;但作為學(xué)習(xí),還是要認(rèn)真學(xué)習(xí)里面的原理,比如出現(xiàn)了錯(cuò)誤,你要能夠定位到錯(cuò)誤并把它解決掉,因?yàn)榭赡苠e(cuò)誤就出現(xiàn)在配置好的Makefile或者Cmake里面,所以你要看的懂里面代碼的意思(也就是說,你知道這個(gè)工具是這樣用,但是也要明白它的原理機(jī)制,做到之知其然,知其所以個(gè)然來!),這樣才能把問題解決掉。

而且就個(gè)人見解,在傳統(tǒng)的linux工程管理用Makefile的比較多(Uboot里面也是大量使用Makefile來進(jìn)行管理工程);在新型領(lǐng)域,比如物聯(lián)網(wǎng)開發(fā)(特別是一些開源項(xiàng)目等),用Cmake的比較多(當(dāng)然也有可能是例外哈?。?;好了,廢話就不多說了,開始來學(xué)習(xí)了:

一、Cmake學(xué)習(xí)使用:

1、安裝Cmake管理工具:

一般實(shí)際嵌入式linux開發(fā),幾乎都是用Ubuntu來開發(fā)的,因?yàn)槟巧?,安裝啥應(yīng)用程序的非常方便,只需一個(gè)命令“apt install + 應(yīng)用程序名稱” 大部分都直接搞定,不用再去配置(特殊的,就例外,還要一些其他相關(guān)配置?。?,安裝Cmake就是一條命令直接搞定:

root@txp-virtual-machine:/home/txp# apt install cmake

Reading package lists... Done

Building dependency tree

2、先從一個(gè)簡(jiǎn)單示例,來得出一般書寫步驟規(guī)律:

這里先寫一個(gè)簡(jiǎn)單的代碼工程main.c,然后再使用我們的cmake來管理代碼工程:

#include <stdio.h>

int main(void)

printf("TXP嵌入式");

return 0;

然后開始寫cmake工程管理文件,我在當(dāng)前目錄建立一個(gè)CMakeLists.txt文件,然后再往里面開始工程管理代碼

root@txp-virtual-machine:/home/txp/test# pwd

/home/txp/test

root@txp-virtual-machine:/home/txp/test# touch CMakeLists.txt

root@txp-virtual-machine:/home/txp/test# ls

CMakeLists.txt main.c

CMakeLists.txt文件里面的內(nèi)容如下:

cmake_minimum_required (VERSION 2.8)

project (main)

add_executable(main main.c)

解釋一下這三條語句分別代表什么意思:

1、表示cmake最低執(zhí)行版本是2.8才有效來管理我們的工程項(xiàng)目。

2、表示整個(gè)工程名為main

3、表示最終要生成的elf文件的名字叫main,使用的源文件是main.c

現(xiàn)在我們來實(shí)現(xiàn)cmake的功能,在當(dāng)前目錄下,使用命令"cmake ."(.表示當(dāng)前目錄,而..表示上一級(jí)目錄),生成makefile等相關(guān)文件;然后再執(zhí)行一下make命令進(jìn)行編譯工程,就能生成可執(zhí)行文件main了,同時(shí)也會(huì)生成makefile文件,最后就可以執(zhí)行可執(zhí)行main文件,就能得到我們所要的結(jié)果:

root@txp-virtual-machine:/home/txp/test# cmake .

-- The C compiler identification is GNU 4.8.4

-- The CXX compiler identification is GNU 4.8.4

-- Check for working C compiler: /usr/bin/cc

-- Check for working C compiler: /usr/bin/cc -- works

-- Detecting C compiler ABI info

-- Detecting C compiler ABI info - done

-- Check for working CXX compiler: /usr/bin/c++

-- Check for working CXX compiler: /usr/bin/c++ -- works

-- Detecting CXX compiler ABI info

-- Detecting CXX compiler ABI info - done

-- Configuring done

-- Generating done

-- Build files have been written to: /home/txp/test

root@txp-virtual-machine:/home/txp/test# ls

CMakeCache.txt CMakeFiles cmake_install.cmake CMakeLists.txt main main.c Makefile

root@txp-virtual-machine:/home/txp/test# make

Scanning dependencies of target main

[100%] Building C object CMakeFiles/main.dir/main.c.o

Linking C executable main

[100%] Built target main

root@txp-virtual-machine:/home/txp/test# ./main

TXP嵌入式

如果你再好奇一下的話,可以打開看看Makefile里面的內(nèi)容是啥,很容易想到是用makefile的方式來實(shí)現(xiàn)對(duì)工程main的管理,這里我就不畫蛇添足把源代碼貼出來了。cmake_install.cmake 是一些相關(guān)配置選項(xiàng):

# Install script for directory: /home/txp/test

# Set the install prefix

IF(NOT DEFINED CMAKE_INSTALL_PREFIX)

SET(CMAKE_INSTALL_PREFIX "/usr/local")

ENDIF(NOT DEFINED CMAKE_INSTALL_PREFIX)

STRING(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")

# Set the install configuration name.

IF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)

IF(BUILD_TYPE)

STRING(REGEX REPLACE "^[^A-Za-z0-9_]+" ""

CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")

ELSE(BUILD_TYPE)

SET(CMAKE_INSTALL_CONFIG_NAME "")

ENDIF(BUILD_TYPE)

MESSAGE(STATUS "Install configuration: "${CMAKE_INSTALL_CONFIG_NAME}"")

ENDIF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)

# Set the component getting installed.

IF(NOT CMAKE_INSTALL_COMPONENT)

IF(COMPONENT)

MESSAGE(STATUS "Install component: "${COMPONENT}"")

SET(CMAKE_INSTALL_COMPONENT "${COMPONENT}")

ELSE(COMPONENT)

SET(CMAKE_INSTALL_COMPONENT)

ENDIF(COMPONENT)

ENDIF(NOT CMAKE_INSTALL_COMPONENT)

# Install shared libraries without execute permission?

IF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)

SET(CMAKE_INSTALL_SO_NO_EXE "1")

ENDIF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)

IF(CMAKE_INSTALL_COMPONENT)

SET(CMAKE_INSTALL_M(jìn)ANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")

ELSE(CMAKE_INSTALL_COMPONENT)

SET(CMAKE_INSTALL_M(jìn)ANIFEST "install_manifest.txt")

ENDIF(CMAKE_INSTALL_COMPONENT)

FILE(WRITE "/home/txp/test/${CMAKE_INSTALL_M(jìn)ANIFEST}" "")

FOREACH(file ${CMAKE_INSTALL_M(jìn)ANIFEST_FILES})

FILE(APPEND "/home/txp/test/${CMAKE_INSTALL_M(jìn)ANIFEST}" "${file}")

ENDFOREACH(file)

而CMakeFiles是一個(gè)文件夾,里面文件內(nèi)容如下:

root@txp-virtual-machine:/home/txp/test/CMakeFiles# ls

2.8.12.2 cmake.check_cache CMakeDirectoryInformation.cmake

CMakeOutput.log CMakeTmp main.dir Makefile2

Makefile.cmake progress.marks TargetDirectories.txt

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • IC設(shè)計(jì)
    +關(guān)注

    關(guān)注

    38

    文章

    1360

    瀏覽量

    105764
  • Makefile
    +關(guān)注

    關(guān)注

    1

    文章

    125

    瀏覽量

    19730
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    AI耳機(jī)變身翻譯官+會(huì)議總結(jié)大師?涂鴉AI音頻開發(fā)方案,讓耳機(jī)升級(jí)到下個(gè)level

    在接入AI能力后,耳機(jī)這種日常化的產(chǎn)品,能有多大的想象空間?它不僅能幫你輕松聽懂全球外語和地方方言,還能將語音轉(zhuǎn)化為文字、翻譯成不同語言,甚至自動(dòng)總結(jié)會(huì)議要點(diǎn)、生成思維導(dǎo)圖,適配辦公、學(xué)習(xí)、跨語言
    的頭像 發(fā)表于 07-10 18:47 ?377次閱讀
    AI耳機(jī)變身翻譯官+會(huì)議<b class='flag-5'>總結(jié)</b>大師?涂鴉AI音頻開發(fā)方案,讓耳機(jī)升級(jí)到下<b class='flag-5'>一</b>個(gè)level

    相關(guān)協(xié)議信號(hào)總結(jié)

    電子發(fā)燒友網(wǎng)站提供《相關(guān)協(xié)議信號(hào)總結(jié).xlsx》資料免費(fèi)下載
    發(fā)表于 06-25 15:34 ?4次下載

    嵌入式AI技術(shù)之深度學(xué)習(xí):數(shù)據(jù)樣本預(yù)處理過程中使用合適的特征變換對(duì)深度學(xué)習(xí)的意義

    ? 作者:蘇勇Andrew 使用神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)機(jī)器學(xué)習(xí),網(wǎng)絡(luò)的每個(gè)層都將對(duì)輸入的數(shù)據(jù)做次抽象,多層神經(jīng)網(wǎng)絡(luò)構(gòu)成深度學(xué)習(xí)的框架,可以深度理解數(shù)據(jù)中所要表示的規(guī)律。從原理上看,使用深度學(xué)習(xí)
    的頭像 發(fā)表于 04-02 18:21 ?885次閱讀

    使用STM32CubeMX生成CMake工程中的FLASH.ld被更改怎么解決?

    使用STM32CubeMX生成CMake工程之后,對(duì)STM32xxxx_FLASH.ld進(jìn)行了修改。然后再次使用STM32CubeMX對(duì)工程進(jìn)行修改的時(shí)候,STM32xxxx_FLASH.ld文件匯總被修改的部分會(huì)被恢復(fù)原狀。請(qǐng)問各位有沒有好的辦法能夠解決這個(gè)問題,煩請(qǐng)指教?。。?/div>
    發(fā)表于 03-10 06:52

    在CubeMX V6.13.0版本上配置的CMake工程無法通過編譯怎么解決?

    在 CubeMX V6.13.0 版本上配置的 CMake 工程無法通過編譯,報(bào)錯(cuò)如下圖
    發(fā)表于 03-07 16:59

    為什么無法在OpenVINO? 2021.3源中使用CMAKE編譯ONNX模型?

    嘗試從源版本 2021.3 編譯OpenVINO? 錯(cuò)誤: ~/項(xiàng)目/OpenVINO/cmake-build-debug/_deps/ext_onnx-src/onnx/onnx_pb.h
    發(fā)表于 03-05 08:29

    TOF學(xué)習(xí)總結(jié)

    iToF(間接飛行時(shí)間)技術(shù)中,波長(zhǎng)越短,分辨細(xì)節(jié)的能力越好,主要原因與光的波動(dòng)特性和調(diào)制信號(hào)的特性密切相關(guān)。以下是詳細(xì)解釋:1. 光的波動(dòng)特性:波長(zhǎng)與分辨率的關(guān)系波長(zhǎng)越短,空間分辨率越高:光的波長(zhǎng)決定了其能夠分辨的最小細(xì)節(jié)。根據(jù)光學(xué)理論,分辨率與波長(zhǎng)成反比,波長(zhǎng)越短,能夠分辨的特征尺寸越小。例如,可見光的波長(zhǎng)(400-700 nm)比紅外光(通常用于iToF,波長(zhǎng)約850 nm)更短,因此可見光能夠分辨更細(xì)微的細(xì)節(jié)。衍射極限:光的衍
    發(fā)表于 02-25 17:49 ?0次下載

    關(guān)于RISC-V芯片的應(yīng)用學(xué)習(xí)總結(jié)

    RISC-V芯片作為種基于精簡(jiǎn)指令集計(jì)算(RISC)原則的開源指令集架構(gòu)(ISA)芯片,近年來在多個(gè)領(lǐng)域展現(xiàn)出了廣泛的應(yīng)用潛力和顯著優(yōu)勢(shì)。以下是對(duì)RISC-V芯片應(yīng)用的總結(jié)。 RISC-V芯片
    發(fā)表于 01-29 08:38

    關(guān)于中斷知識(shí)學(xué)習(xí)總結(jié)筆記

    《關(guān)于中斷知識(shí)學(xué)習(xí)總結(jié)筆記》 、中斷的核心概念 中斷是計(jì)算機(jī)運(yùn)行過程中的種重要機(jī)制,它能夠使計(jì)算機(jī)在執(zhí)行主程序時(shí),暫停當(dāng)前任務(wù)去響應(yīng)特定的事件或請(qǐng)求,處理完成后再返回主程序繼續(xù)執(zhí)行
    發(fā)表于 11-23 11:23

    學(xué)習(xí)go語言的過程踩過的坑

    作為個(gè)5年的phper,這兩年公司和個(gè)人都在順應(yīng)技術(shù)趨勢(shì),新項(xiàng)目慢慢從php轉(zhuǎn)向了go語言,從2021年到現(xiàn)在,筆者手上也先后開發(fā)了兩個(gè)go項(xiàng)目。在學(xué)習(xí)go語言的過程中也學(xué)習(xí)總結(jié)
    的頭像 發(fā)表于 11-11 09:22 ?471次閱讀

    AM17x功耗總結(jié)

    電子發(fā)燒友網(wǎng)站提供《AM17x功耗總結(jié).pdf》資料免費(fèi)下載
    發(fā)表于 10-12 09:14 ?0次下載
    AM17x功耗<b class='flag-5'>總結(jié)</b>

    51單片機(jī)晶振的問題總結(jié)

    電子發(fā)燒友網(wǎng)站提供《51單片機(jī)晶振的問題總結(jié).doc》資料免費(fèi)下載
    發(fā)表于 09-07 09:32 ?0次下載

    國產(chǎn)芯上運(yùn)行TinyMaxi輕量級(jí)的神經(jīng)網(wǎng)絡(luò)推理庫-米爾基于芯馳D9國產(chǎn)商顯板

    cmake生成構(gòu)建系統(tǒng) 使用make構(gòu)建可執(zhí)行文件然后運(yùn)行 可以看到輸出信息 MNIST 示例默認(rèn)未使用任何指令加速,運(yùn)行了張 28×28 的手寫數(shù)字模擬圖像,共消耗了 0.114 毫秒 MBNET示例
    發(fā)表于 08-09 18:26

    國產(chǎn)芯上運(yùn)行TinyMaxi輕量級(jí)的神經(jīng)網(wǎng)絡(luò)推理庫-米爾基于芯馳D9國產(chǎn)商顯板

    學(xué)習(xí)模型~ 開源地址: https://github.com/sipeed/TinyMaix搭建的環(huán)境為編譯的Ubuntu18.04 已經(jīng)預(yù)裝好cmake make工具由于魔法網(wǎng)絡(luò)原因,這里提前下載好
    發(fā)表于 08-07 18:06

    《圖說本源產(chǎn)品》系列之二:量子計(jì)算全物理體系學(xué)習(xí)機(jī)

    科技自立自強(qiáng)不能停留在論文中、匯報(bào)中和總結(jié)中,而是要一個(gè)一個(gè)產(chǎn)品制造出來。本源,擁有中國第條超導(dǎo)量子計(jì)算機(jī)制造鏈。《圖說本源產(chǎn)品》以圖片形式,系列展示中國自主量子計(jì)算系列產(chǎn)品。產(chǎn)品簡(jiǎn)介:本源量子
    的頭像 發(fā)表于 07-26 08:23 ?779次閱讀
    《圖說本源產(chǎn)品》系列之二:量子計(jì)算全物理體系<b class='flag-5'>學(xué)習(xí)</b>機(jī)