CMake入門(3. 多個目錄)

跟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靜態庫

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章