真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Cmake怎么使用

這篇文章主要講解了“Cmake怎么使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Cmake怎么使用”吧!

成都創(chuàng)新互聯(lián)公司自2013年起,先為高明等服務建站,高明等地企業(yè),進行企業(yè)商務咨詢服務。為高明企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。

1、多個源文件,使用命令 aux_source_directory(dir var):

在上一篇文章最后結尾的時候,有一個問題,就是在同一目錄下面,有多個源文件的時候,這個時候你不能都往下面第三條命令里面一直手動添加源文件,那工作效率多低啊:

cmake_minimum_required(VERSION 2.8)

project(main)

add_executable(main main.c test1.c)

于是乎為了解決這種低效率的操作,在 cmake 里面有一條指令可以完全搞定這個問題;不過為了說明問題,在這之前我又添加了兩個文件:test2.c 和 test2.h:

root@txp-virtual-machine:/home/txp/test# ls
1               cmake_install.cmake  main.c    test1.h  touch2.c
CMakeCache.txt  CMakeLists.txt       Makefile  test2.c  touch2.h
CMakeFiles      main                 test1.c   test2.h

test2.c內容如下:

#include 
#include "test2.h"

void func1()
{
  printf("i like the cmake\n");
}

test2.h內容如下:

#ifndef _TEST2_H_
#define _TEST2_H_

void func1();

#endif

最后main.c里面調用了func1函數(shù):

#include 
#include "test1.h"
#include "test2.h"
int main(void)
{
    func1();
    func(8);
    printf("TXP嵌入式\n");
    return 0;

}

接下來我們的重點就來了,在cmake里面可以使用aux_source_directory(dir var)就可以搞定上面效率低的問題,接下來我們在CMakeLists.txt這樣操作:

cmake_minimum_required(VERSION 2.8)

project(main)

aux_source_directory(. SRC_LIST)

add_executable(main ${SRC_LIST})


然后再進行編譯:

root@txp-virtual-machine:/home/txp/test# cmake .
-- Configuring done
-- Generating done
-- Build files have been written to: /home/txp/test


root@txp-virtual-machine:/home/txp/test# make
Scanning dependencies of target main
[ 25%] Building C object CMakeFiles/main.dir/main.c.o
[ 50%] Linking C executable main


root@txp-virtual-machine:/home/txp/test# ./main
i like the cmake
the b is 8
TXP嵌入式


說明:

aux_source_directory(. SRC_LIST):表示是把當當前目錄下的所有源文件都添加到源列表變量里面去,最后用add_executable(main ${SRC_LIST})把所有有用的源文件加工成目標文件main。不過這方法也有他的缺點,就是把當前目錄下的源文件都添加到變量SRC_LIST,如果我們不需要一些沒有用的文件(只要拿到所需的源文件就行),可以進行這樣操作:

cmake_minimum_required(VERSION 2.8)

project(main)

set(SRC_LIST
        ./main.c
        ./test1.c
        ./test2.c
         )

add_executable(main ${SRC_LIST})

這樣是能夠通過編譯的:

root@txp-virtual-machine:/home/txp/test# cmake .
-- Configuring done
-- Generating done
-- Build files have been written to: /home/txp/test
root@txp-virtual-machine:/home/txp/test# make
[100%] Built target main

2、在上面的例子中,我們會發(fā)現(xiàn)同一目錄下源文件比較亂,所以在cmake里面有這樣的規(guī)則,可以把相同類型以及相關的源文件放到同一個目錄,比如說,現(xiàn)在我在test目錄下創(chuàng)建test1和test2兩個目錄文件,并同時把test1.c、test1.h、test2.c、test2.h分別放到這兩個目錄下去:

root@txp-virtual-machine:/home/txp/test# mkdir -p test1 test2
root@txp-virtual-machine:/home/txp/test# ls
@               CMakeFiles           main      test1    test2
1               cmake_install.cmake  main.c    test1.c  test2.c
CMakeCache.txt  CMakeLists.txt       Makefile  test1.h  test2.h

然后把相關文件一到這兩個目錄文件下去:

root@txp-virtual-machine:/home/txp/test# mv test1.c test1.h test1

root@txp-virtual-machine:/home/txp/test# mv test2.c test2.h test2
root@txp-virtual-machine:/home/txp/test# ls
@  CMakeCache.txt  cmake_install.cmake  main    Makefile  test2
1  CMakeFiles      CMakeLists.txt       main.c  test1

root@txp-virtual-machine:/home/txp/test# tree

├── cmake_install.cmake
├── CMakeLists.txt
├── main
├── main.c
├── Makefile
├── test1
│   ├── test1.c
│   └── test1.h
└── test2
    ├── test2.c
    └── test2.h


然后這個時候要修改CMakeLists.txt里面的規(guī)則屬性了:

cmake_minimum_required(VERSION 2.8)

project(main)

include_directories(test1 test2)
aux_source_directory(test1 SRC_LIST)
aux_source_directory(test2 SRC_LIST1)

add_executable(main main.c  ${SRC_LIST} ${SRC_LIST1})

然后編譯輸出,也是能夠通過的:

root@txp-virtual-machine:/home/txp/test# cmake .
-- Configuring done
-- Generating done
-- Build files have been written to: /home/txp/test
root@txp-virtual-machine:/home/txp/test# make
Scanning dependencies of target main
[ 25%] Building C object CMakeFiles/main.dir/main.c.o
[ 50%] Building C object CMakeFiles/main.dir/test1/test1.c.o
[ 75%] Building C object CMakeFiles/main.dir/test2/test2.c.o
[100%] Linking C executable main
[100%] Built target main
root@txp-virtual-machine:/home/txp/test# ls
@  CMakeCache.txt  cmake_install.cmake  main    Makefile  test2
1  CMakeFiles      CMakeLists.txt       main.c  test1
root@txp-virtual-machine:/home/txp/test# ./main
i like the cmake
the b is 8
TXP嵌入式

感謝各位的閱讀,以上就是“Cmake怎么使用”的內容了,經(jīng)過本文的學習后,相信大家對Cmake怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關知識點的文章,歡迎關注!


文章標題:Cmake怎么使用
當前URL:http://weahome.cn/article/isjjih.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部