<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示

Linux中CMake的使用3-不同目錄多個源文件

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

上篇(Linux中CMake的使用2-同目錄下多個源文件)介紹了在同一目錄下有多個源文件時如何編寫CMakeLists.txt。

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

1 有1個獨立文件夾

1.1 文件目錄結構

先來看下面這種情況,文件目錄結構如下,sum.c、sum.h和main.c的代碼內容見前面的文章。

pYYBAGMpxg6AHXY7AACrXL8Iwb4843.png

1.2 編寫CMakeLists.txt

對于這種情況,CMakeLists.txt可以有不同的寫法:

寫法1

首先看第一種寫法,如下:

cmake_minimum_required (VERSION 2.8)

project (sum_test)

include_directories (func)

add_executable(sum_test main.c func/sum.c)

這里出現了1個新的命令:include_directories,用來指定頭文件的搜索路徑

寫法2

再來看第二種寫法,如下:

cmake_minimum_required (VERSION 2.8)

project (sum_test)

include_directories (func)

aux_source_directory (func SRC_LIST)

add_executable(sum_test main.c ${SRC_LIST})

可以使用aux_source_directory,將指定目錄下的源文件列表存放到變量

1.3 編譯測試

在當前目錄執行cmake指令:

cmake .

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

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

make
poYBAGMpxhWAZ__WAAJAADxw9uw449.png

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

2 有多個獨立文件夾(情況1)

2.1 文件目錄結構

再來看下面這種情況,文件目錄結構如下,sum.c、sum.h、sub.c、sub.h和main.c的代碼內容見前面的文章。

其中sum.c、sum.h、sub.c和sub.h放到func這個文件夾中:

poYBAGMpxhuALLX6AAC1ScxIdBY026.png

2.2 編寫CMakeLists.txt

注意CMakeLists.txt和之前的區別,其實它和上面的“寫法2”一樣:

cmake_minimum_required (VERSION 2.8)

project (sum_sub_test)

include_directories (func)

aux_source_directory (func SRC_LIST)

add_executable(sum_sub_test main.c ${SRC_LIST})

2.3 編譯測試

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

pYYBAGMpxiCAKMKmAAKK0NUnPj0093.png

3 有多個獨立文件夾(情況2)

3.1 文件目錄結構

再來看下面這種情況,文件目錄結構如下,sum.c、sum.h、sub.c、sub.h和main.c的代碼內容見前面的文章。

其中sum.c和sum.h放到sumfunc這個文件夾中,sub.c和sub.h放到subfunc這個文件夾中:

此次兩種文件分布在兩個文件夾中:

poYBAGMpxiaANyQWAADZyBwT-N0796.png

3.2 編寫CMakeLists.txt

注意CMakeLists.txt和之前的區別:

cmake_minimum_required (VERSION 2.8)

project (sum_sub_test)

include_directories (sumfunc subfunc)

aux_source_directory (sumfunc SRC_LIST1)
aux_source_directory (subfunc SRC_LIST2)

add_executable(sum_sub_test main.c ${SRC_LIST1} ${SRC_LIST2})

這里使用了兩個aux_source_directory,將兩個目錄下的源文件列表分別存放到不同的變量

3.3 編譯測試

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

pYYBAGMpxiyAdQFyAAJeH9Y16vY931.png

4 總結

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

pYYBAGMpxjGAWM-fAAZch3FOWZo591.png

對于不同文件夾下的多個源文件,主要是使用include_directories來添加頭文件的搜索目錄

cmake_minimum_required (VERSION 2.8)

project (sum_test)

include_directories (func)

add_executable(sum_test main.c func/sum.c)

另外,仍然可以借助aux_source_directory把指定目錄下的所有源文件存列表存放到變量中:

cmake_minimum_required (VERSION 2.8)

project (sum_test)

include_directories (func)

aux_source_directory (func SRC_LIST)

add_executable(sum_test main.c ${SRC_LIST})

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

審核編輯:湯梓紅

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

    關注

    87

    文章

    11001

    瀏覽量

    206847
  • 源文件
    +關注

    關注

    0

    文章

    30

    瀏覽量

    4532
  • CMake
    +關注

    關注

    0

    文章

    28

    瀏覽量

    1220
收藏 人收藏

    評論

    相關推薦

    Linux常用命令自學手冊》+Linux簡單指令筆記

    目錄的名字。 - 用法:mv [選項] [源文件/目錄] [目標文件/目錄] cat:查看文件
    發表于 01-05 08:44

    Linux目錄權限給指定用戶

    Linux是一個開放源代碼的操作系統,它基于Unix的設計原則,提供了豐富的權限管理功能,允許用戶對系統中的文件目錄進行精確的控制。在Linux中,每個
    的頭像 發表于 11-23 10:30 ?3257次閱讀

    Linux下如何使用CMake編譯程序

    今天分享一篇關于 cmake 的相關文章,通過這個工具可以生成本地的Makefile。讓我們不用去編寫復雜的Makefile。
    的頭像 發表于 11-21 09:28 ?441次閱讀
    <b class='flag-5'>Linux</b>下如何使用<b class='flag-5'>CMake</b>編譯程序

    Windows下編譯工具CMake的安裝和最簡使用

    MCU的開發環境一般在Windows操作系統上,簡單的工程一般直接編寫Makefile文件后使用make工具構建程序,復雜的工程一般借助CMake來生成Makefile文件后使用make工程構建程序
    的頭像 發表于 11-14 10:18 ?1940次閱讀
    Windows下編譯工具<b class='flag-5'>CMake</b>的安裝和最簡使用

    linux刪除文件命令rm

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

    CMake構建后的項目結構解析

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

    Linux下如何使用CMake編譯程序

    CMake是開源、跨平臺的構建工具,可以讓我們通過編寫簡單的配置文件去生成本地的Makefile,這個配置文件是獨立于運行平臺和編譯器的,這樣就不用親自去編寫Makefile了,而且配置文件
    的頭像 發表于 11-08 16:15 ?1842次閱讀
    在<b class='flag-5'>Linux</b>下如何使用<b class='flag-5'>CMake</b>編譯程序

    linux中刪除文件的命令

    Linux中,可以使用 rm 命令來刪除文件。該命令有多個參數和選項可供使用,以根據不同的情況進行文件刪除操作。例如: rm 命令后面跟上文件
    的頭像 發表于 11-08 14:11 ?359次閱讀

    內核模塊知識:多個源文件編譯生成一個內核模塊

    多個源文件編譯生成一個內核模塊 例如,將hello.c和world.c兩個c文件編譯生成一個叫hello_world.o的目標文件,則在 Makefile 中添加以下兩句: obj-m
    的頭像 發表于 09-26 16:58 ?540次閱讀

    linux內核源代碼詳解

     在安裝好的Linux系統中,內核的源代碼位于/ust/src/linux.如果是從GNU網站下載的Linux內核的tar文件,則展開以后在一個叫l
    發表于 09-06 17:01 ?2次下載

    SPI驅動源文件目錄在哪

    SPI 驅動源文件目錄 Linux common spi driver kernel- 4.14 /drivers/ spi/spi.c Linux 提供的通用接口封裝層驅動kerne
    的頭像 發表于 07-25 10:49 ?508次閱讀
    SPI驅動<b class='flag-5'>源文件</b><b class='flag-5'>目錄</b>在哪

    恒訊科技分析:如何使用cp命令在Linux中復制目錄?

    復制目錄Linux中的一項基本任務,它允許我們復制目錄、創建備份或在不同位置之間傳輸數據。在Linux中復制文件
    的頭像 發表于 06-26 17:14 ?489次閱讀

    恒訊科技分析:如何在Linux上使用rm命令刪除文件目錄?

    本指南展示了如何在Linux中使用rm命令行刪除文件、目錄和其他內容?
    的頭像 發表于 06-09 17:02 ?880次閱讀

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

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

    3. CMake set 的使用 - 上___CMake 保姆級教程【C_C++】

    CMake
    jf_97106930
    發布于 :2023年05月18日 15:39:48
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>