跟CMake入門(2. 多個文件)的文件差不多
test2
├── CMakeLists.txt
├── main.c
├── math
│ ├── CMakeLists.txt
│ ├── myadd.c
│ └── myadd.h
myadd.c, myadd.h完全一樣.
main.c只需要將#include "myadd.h"
改成#include "math/myadd.h"
main.c 同目錄的CMakeLists.txt改成
cmake_minimum_required(VERSION 3.0)
project(test1)
aux_source_directory(. DIR_SRCS)
add_subdirectory(math)
add_executable(Demo ${DIR_SRCS})
target_link_libraries(Demo myadd)
說一下最後一句是在鏈接庫,具體可以參考這裏
math下的CMakeLists.txt是:
aux_source_directory(. DIR_LIB_SRCS)
add_library(myadd ${DIR_LIB_SRCS})
add_library
是編譯成一個靜態庫
linux下靜態鏈接庫是.a
動態鏈接庫是.so
$ mkdir build && cmake ..
$ make
$ ll
CMakeCache.txt CMakeFiles cmake_install.cmake Demo Makefile math
$ ls math
CMakeFiles cmake_install.cmake libmyadd.a Makefile
可以看到math文件夾下有我們編譯的.a
靜態庫