Cmake学习总结(二)

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、在上面的例子中,我们会发现同一目录下源文件比较乱,所以在cmake里面有这样的规则,可以把相同类型以及相关的源文件放到同一个目录,比如说,现在我在test目录下创建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里面的规则属性了:

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})

声明: 本文由入驻OFweek维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。
侵权投诉

下载OFweek,一手掌握高科技全行业资讯

还不是OFweek会员,马上注册
打开app,查看更多精彩资讯 >
  • 长按识别二维码
  • 进入OFweek阅读全文
长按图片进行保存