上篇(Linux中CMake的使用2-同目錄下多個源文件)介紹了在同一目錄下有多個源文件時如何編寫CMakeLists.txt。
本篇繼續介紹不同目錄下有多個源文件時如何編寫CMakeLists.txt
1 有1個獨立文件夾
1.1 文件目錄結構
先來看下面這種情況,文件目錄結構如下,sum.c、sum.h和main.c的代碼內容見前面的文章。
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
最后可以看到程序的運行結果。
2 有多個獨立文件夾(情況1)
2.1 文件目錄結構
再來看下面這種情況,文件目錄結構如下,sum.c、sum.h、sub.c、sub.h和main.c的代碼內容見前面的文章。
其中sum.c、sum.h、sub.c和sub.h放到func這個文件夾中:
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 編譯測試
按照之前的編譯測試流程進行編譯測試,結果如下:
3 有多個獨立文件夾(情況2)
3.1 文件目錄結構
再來看下面這種情況,文件目錄結構如下,sum.c、sum.h、sub.c、sub.h和main.c的代碼內容見前面的文章。
其中sum.c和sum.h放到sumfunc這個文件夾中,sub.c和sub.h放到subfunc這個文件夾中:
此次兩種文件分布在兩個文件夾中:
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 編譯測試
按照之前的編譯測試流程進行編譯測試,結果如下:
4 總結
本篇介紹了不同目錄下有多個源文件時如何編寫CMakeLists.txt。
對于不同文件夾下的多個源文件,主要是使用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文章
11304瀏覽量
209502 -
源文件
+關注
關注
0文章
30瀏覽量
4586 -
CMake
+關注
關注
0文章
28瀏覽量
1275
發布評論請先 登錄
相關推薦
評論