cmake 同一目錄下多個原始檔

2021-10-12 21:59:09 字數 2934 閱讀 6952

接下來進入稍微複雜的例子:在同乙個目錄下有多個原始檔。

在之前的目錄下新增2個檔案,testfunc.c和testfunc.h。新增完後整體檔案結構如下:

testfunc.c內容如下:

/*

** testfunc.c

*/#include

#include

"testfunc.h"

void

func

(int data)

testfunc.h內容如下:

/*

** testfunc.h

*/#ifndef _test_func_h_

#define _test_func_h_

void

func

(int data)

;#endif

修改main.c,呼叫testfunc.h裡宣告的函式func():

#include

#include

"testfunc.h"

intmain

(void

)

修改cmakelists.txt,在add_executable的引數裡把testfunc.c加進來

cmake_minimum_required (version 2.8

)project (demo)

add_executable

(main main.c testfunc.c)

然後重新執行cmake生成makefile並執行make,

然後執行重新生成的elf檔案main,

aux_source_directory

(dir var)

第乙個引數dir是指定目錄,第二個引數var是用於存放原始檔列表的變數。

我們在main.c所在目錄下再新增2個檔案,testfunc1.c和testfunc1.h。新增完後整體檔案結構如下

testfunc1.c如下:

/*

** testfunc1.c

*/#include

#include

"testfunc1.h"

void

func1

(int data)

testfunc1.h如下:

/*

** testfunc1.h

*/#ifndef _test_func1_h_

#define _test_func1_h_

void

func1

(int data)

;#endif

再修改main.c,呼叫testfunc1.h裡宣告的函式func1():

#include

#include

"testfunc.h"

#include

"testfunc1.h"

intmain

(void

)

修改cmakelists.txt:使用aux_source_directory把當前目錄下的原始檔存列表存放到變數src_list裡,然後在add_executable裡呼叫src_list(注意呼叫變數時的寫法)

cmake_minimum_required (version 2.8

)project (demo)

aux_source_directory

(. src_list)

add_executable

(main $

)

再次執行cmake和make,並執行main

可以看到執行成功了。

aux_source_directory()也存在弊端,它會把指定目錄下的所有原始檔都加進來,可能會加入一些我們不需要的檔案,此時我們可以使用set命令去新建變數來存放需要的原始檔,如下:

cmake_minimum_required (version 2.8

)project (demo)

set( src_list

./main.c

./testfunc1.c

./testfunc.c)

add_executable

(main $

)

命令

說明示例

set新建變數來存放需要的原始檔

set( src_list ./main.c ./testfunc1.c ./testfunc.c)

aux_source_directory

把當前目錄下的原始檔存列表存放到變數src_list

aux_source_directory(. src_list)

add_executable

把指定目錄下所有的原始檔儲存在乙個變數中

add_executable(main $)

makefile在同一目錄下編譯出多個可執行檔案

library ltpn agent ltpn effect ltpn proc lhiredis ljson ldflags as needed srcs wildcard c objs patsubst c,o,srcs targets srcs c info objs info targets...

python引入同一目錄下的py檔案

注意 python2和python3的包內import語法有區別,下面介紹一下python3的包內import語法 例如在admin.py檔案中要引入dealcode.py檔案 1 在目錄下有 init py檔案 2 在admin.py檔案中加一行 from import dealcode 如果要引...

在同一目錄下Nginx對多個配置檔案的讀取順序問題

nginx做反向 時,可能需要 多個伺服器,這時,有一種可行的方案就是將不同的 伺服器配置在不同的配置檔案中,如 root localhost conf.d pwd mydata nginx conf conf.d root localhost conf.d ls default.conf orde...