色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

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

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

Linux中CMake的使用2-同目錄下多個源文件

碼農(nóng)愛學習 ? 來源:碼農(nóng)愛學習 ? 作者:碼農(nóng)愛學習 ? 2022-09-20 08:57 ? 次閱讀

上篇文章(Linux中CMake的使用1-單個源文件)介紹了編寫CMakeLists.txt的最基礎(chǔ)用法——只有一個源文件的情況。

本篇繼續(xù)介紹,在同一目錄下有多個源文件時如何編寫CMakeLists.txt。

1 一組文件的情況

先來看下面這種情況:除了main.c以外,只多出來一組源文件(1個.c文件+1個.h文件)。

poYBAGMoc9eARppKAAA4ovF0T1w014.png

1.1 編寫C源文件

以一個簡單的兩數(shù)相加為例,代碼如下:

main.c

#include 
#include "sum.h"

int main(void)
{
    int a = 1;
    int b = 2;
    printf("a=%d, b=%d\n", a, b);
    printf("a+b=%d\n", sum(a, b));

    return 0;
}

sum.c

#include "sum.h"

int sum(int a, int b)
{
    return (a + b);
}

sum.h

#ifndef _SUM_H_
#define _SUM_H_

int sum(int a, int b);

#endif

1.2 編寫CMakeLists.txt

CMakeLists.txt的內(nèi)容,和上一篇介紹的對單個文件進行編譯的情況基本一樣:

cmake_minimum_required (VERSION 2.8)

project (sum_test)

add_executable(sum_test main.c sum.c)

注意,同個目錄有多個源文件,CMakeLists的主要區(qū)別是在add_executable繼續(xù)增加需要編譯的c文件。

1.3 編譯測試

在當前目錄執(zhí)行cmake指令:

cmake .

cmake后面的點,用來告訴CMake工具在當前目錄中搜尋CMakeLists.txt文件。

自動生成makefile文件之后,再使用make指令編譯源碼:

make
pYYBAGMoc-GAeqh7AAJFgrAub0I598.png

最后可以看到程序的運行結(jié)果。

2 多組文件的情況

再來看下面這種情況:除了main.c以外,還多出來兩組源文件(sum.c+sum.h、sub.c+sub.h)。

pYYBAGMoc-aAM6C7AAA_OhHDDoE561.png

2.1 編寫C源文件

測試代碼仍很簡單,sum的函數(shù)和上面一樣,sub函數(shù)以及main的代碼如下:

main.c

#include 
#include "sum.h"
#include "sub.h"

int main(void)
{
    int a = 1;
    int b = 2;
    printf("a=%d, b=%d\n", a, b);
    printf("a+b=%d\n", sum(a, b));
    printf("a-b=%d\n", sub(a, b));

    return 0;
}

sub.c

#include "sub.h"

int sub(int a, int b)
{
    return (a - b);
}

sub.h

#ifndef _SUB_H_
#define _SUB_H_

int sub(int a, int b);

#endif

注:sum.c和sum.h和之前的一樣

2.2 編寫CMakeLists.txt

注意CMakeLists.txt和之前的區(qū)別:

cmake_minimum_required (VERSION 2.8)

project (sum_sub_test)

aux_source_directory(. SRC_LIST)

add_executable(sum_sub_test main.c ${SRC_LIST})

這里使用aux_source_directory把當前目錄(.)下的所有源文件存列表存放到變量SRC_LIST

然后在add_executable里調(diào)用SRC_LIST,這樣,當有再多的源文件,CMakeLists也不需要改了

2.3 編譯測試

按照之前的編譯測試流程進行編譯測試,結(jié)果如下:

poYBAGMoc-6ABPbpAAKobE1gqsE604.png

3 總結(jié)

本篇介紹了同一目錄下有多個源文件時如何編寫CMakeLists.txt。

pYYBAGMoc_OAQTRAAAEX12D-JgM796.png

對于同個文件夾下有多個源文件,主要還是修改add_executable這句,將需要用到的C文件添加進去即可:

cmake_minimum_required (VERSION 2.8)

project (hello)

add_executable(sum_test main.c sum.c)

另外,還可以借助aux_source_directory把指定目錄下的所有源文件存列表存放到變量中,這樣就不受文件數(shù)量的影響:

aux_source_directory(. SRC_LIST)
add_executable(sum_sub_test main.c ${SRC_LIST})

總的來說,一個新的知識點就是aux_source_directory的使用。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11322

    瀏覽量

    209864
  • 源文件
    +關(guān)注

    關(guān)注

    0

    文章

    30

    瀏覽量

    4601
  • CMake
    +關(guān)注

    關(guān)注

    0

    文章

    28

    瀏覽量

    1285
收藏 0人收藏

    評論

    相關(guān)推薦

    LinuxCMake的使用3-不同目錄多個源文件

    上篇(LinuxCMake的使用2-目錄下多個
    的頭像 發(fā)表于 09-21 08:49 ?4077次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>中</b><b class='flag-5'>CMake</b>的使用3-不同<b class='flag-5'>目錄</b><b class='flag-5'>多個</b><b class='flag-5'>源文件</b>

    Linux目錄文件結(jié)構(gòu)

    ,都可以在這個目錄下找到linux常用的命令。系統(tǒng)所需要的那些命令位于此目錄。/boot:Linux的內(nèi)核及引導系統(tǒng)程序所需要的文件
    發(fā)表于 12-01 14:44

    LINUX目錄文件結(jié)構(gòu)

    目錄下的共享庫。因此,千萬不要輕易對這個目錄進行什么操作,一旦發(fā)生問題,系統(tǒng)就不能工作了。/lost+found: 在ext2或ext3文件系統(tǒng)
    發(fā)表于 04-13 15:10

    如何編譯多個源文件的代碼呢

    嵌入式Linux開發(fā)工具-工程管理器 make1.什么是工程/項目?(項目:多個源文件、資源文件構(gòu)成的項目代碼)2.如何編譯
    發(fā)表于 12-21 08:11

    介紹一下如何基于cmake框架新建一個全新的項目

    和 CMakeLists.txt 文件即可目錄結(jié)構(gòu)如下:CMakeLists.txt:在 main.c 編寫好相應的功能代碼后,在 bl_mcu_sdk 目錄下進行編譯即可,編譯命
    發(fā)表于 06-29 17:32

    Linux改變文件目錄的訪問權(quán)限命令

    Linux改變文件目錄的訪問權(quán)限命令 Linux改變文件目錄的訪問權(quán)限命令  
    發(fā)表于 01-18 12:46 ?1202次閱讀

    Delphi教程之實現(xiàn)指定目錄下文件查詢

    Delphi教程之實現(xiàn)指定目錄下文件查詢,很好的Delphi資料,快來下載學習吧
    發(fā)表于 04-11 16:09 ?6次下載

    JAVA教程之列出目錄下文件

    JAVA教程之列出目錄下文件,很好的JAVA的資料,快來學習吧
    發(fā)表于 04-11 17:28 ?5次下載

    Cmake學習的總結(jié)(三)

    在上一篇文Cmake文章里面,我們同樣在文章的最后面留了一個問題實現(xiàn),就是把源文件放到src目錄下,把頭文件放到include目錄下去,這樣
    的頭像 發(fā)表于 12-24 17:45 ?588次閱讀

    嵌入式Linux開發(fā)之文件系統(tǒng)目錄結(jié)構(gòu)介紹

    前言Linux文件系統(tǒng),顧名思義:文件是數(shù)據(jù)的集合,文件系統(tǒng)不僅包含著文件的數(shù)據(jù)而且還有
    發(fā)表于 11-01 16:31 ?3次下載
    嵌入式<b class='flag-5'>Linux</b>開發(fā)之<b class='flag-5'>文件</b>系統(tǒng)<b class='flag-5'>目錄</b>結(jié)構(gòu)介紹

    CMake的實戰(zhàn)教程-2

    第一個問題,在運行`cmake .`后會產(chǎn)生很多垃圾文件,那么我們可以讓它在一個build目錄下去編譯,生成的垃圾文件放在這個目錄下就好了,
    的頭像 發(fā)表于 02-14 10:43 ?696次閱讀

    CMake實戰(zhàn)教程-2

    第一個問題,在運行`cmake .`后會產(chǎn)生很多垃圾文件,那么我們可以讓它在一個build目錄下去編譯,生成的垃圾文件放在這個目錄下就好了,
    的頭像 發(fā)表于 02-28 16:18 ?772次閱讀

    如何將linux下多種類型的多個文件復制到另一個目錄

    即假如/haodao1目錄下存在test1.txt、test2.c、test3.java、test4.py、test5.sql這五種不同類型的不同文件,如何將.txt、.c、.java、.py這些
    發(fā)表于 06-09 15:44 ?1001次閱讀

    CMake構(gòu)建后的項目結(jié)構(gòu)解析

    Structure After CMake Build) CMake構(gòu)建完成后,會在項目的根目錄下生成一個名為build的目錄。這個目錄
    的頭像 發(fā)表于 11-10 10:27 ?2152次閱讀
    <b class='flag-5'>CMake</b>構(gòu)建后的項目結(jié)構(gòu)解析

    linux刪除文件命令rm

    Linux系統(tǒng),可以使用rm命令來刪除文件目錄。該命令的功能是刪除一個目錄的一個或
    的頭像 發(fā)表于 11-13 16:42 ?968次閱讀
    主站蜘蛛池模板: 性欧美videofree中文字幕| 最近中文字幕在线中文视频| ava云直播| 欧美最新色p图| 吃奶啃奶玩乳漫画| 性生片30分钟| 老师真棒无遮瑕版漫画免费| 草比比过程图| 亚洲haose在线观看| 空姐内射出白浆10p| 成在线人免费| 一本道色播| 日本高清无人区影院| 国精一区二区AV在线观看网站| 2019久久这里只精品热在线观看| 三级全黄a| 久久欧洲AV无码精品色午夜麻豆| 被男按摩师添的好爽在线直播| 亚洲欧洲日产国码中学| 欧美国产精品主播一区| 国产学生无码中文视频一区| 99精品免费久久久久久久久日本| 午夜国产大片免费观看| 毛片内射久久久一区| 国产精品久久久久久久人人看 | 一二三四在线观看高清电视剧 | 国产人成高清在线视频99| 在线观看成人3d动漫入口| 色噜噜视频| 免费观看激烈日板子| 国内国外精品影片无人区| seyeye高清视频在线| 一道精品视频一区二区| 日韩欧美一级| 媚药调教被撑到合不拢h| 国产亚洲人成在线视频| 成人伦理影院| 97超级碰久久久久香蕉人人| 亚洲无码小格式| 哇嘎在线精品视频在线观看| 欧美内射深插日本少妇|

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品