精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

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

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

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

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

1 一組文件的情況

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

poYBAGMoc9eARppKAAA4ovF0T1w014.png

1.1 編寫C源文件

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

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的內容,和上一篇介紹的對單個文件進行編譯的情況基本一樣:

cmake_minimum_required (VERSION 2.8)

project (sum_test)

add_executable(sum_test main.c sum.c)

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

1.3 編譯測試

在當前目錄執行cmake指令:

cmake .

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

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

make
pYYBAGMoc-GAeqh7AAJFgrAub0I598.png

最后可以看到程序的運行結果。

2 多組文件的情況

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

pYYBAGMoc-aAM6C7AAA_OhHDDoE561.png

2.1 編寫C源文件

測試代碼仍很簡單,sum的函數和上面一樣,sub函數以及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和之前的區別:

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里調用SRC_LIST,這樣,當有再多的源文件,CMakeLists也不需要改了

2.3 編譯測試

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

poYBAGMoc-6ABPbpAAKobE1gqsE604.png

3 總結

本篇介紹了同一目錄下有多個源文件時如何編寫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把指定目錄下的所有源文件存列表存放到變量中,這樣就不受文件數量的影響:

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

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

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

    關注

    87

    文章

    11232

    瀏覽量

    208948
  • 源文件
    +關注

    關注

    0

    文章

    30

    瀏覽量

    4571
  • CMake
    +關注

    關注

    0

    文章

    28

    瀏覽量

    1262
收藏 人收藏

    評論

    相關推薦

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

    上篇(LinuxCMake的使用2-目錄下多個
    的頭像 發表于 09-21 08:49 ?4006次閱讀
    <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目錄文件結構

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

    LINUX目錄文件結構

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

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

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

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

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

    Linux改變文件目錄的訪問權限命令

    Linux改變文件目錄的訪問權限命令 Linux改變文件目錄的訪問權限命令  
    發表于 01-18 12:46 ?1197次閱讀

    Delphi教程之實現指定目錄下文件查詢

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

    JAVA教程之列出目錄下文件

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

    Cmake學習的總結(三)

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

    嵌入式Linux開發之文件系統目錄結構介紹

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

    CMake的實戰教程-2

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

    CMake實戰教程-2

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

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

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

    CMake構建后的項目結構解析

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

    linux刪除文件命令rm

    Linux系統,可以使用rm命令來刪除文件目錄。該命令的功能是刪除一個目錄的一個或
    的頭像 發表于 11-13 16:42 ?878次閱讀