Cmake:标准的Linux C++工程构建

1. 工程结构

每个代码文件均包含CMakeLists.txt文件

.
├── CMakeLists.txt
├── build
├── mylib
│   ├── CMakeLists.txt
│   ├── mymath.cpp
│   └── mymath.hpp
└── src
    ├── CMakeLists.txt
    └── demo.cpp

3 directories, 6 files

2. CMakeLists.txt

(1) mylib路径下的CMakeLists.txt
├── mylib
│ ├── CMakeLists.txt
│ ├── mymath.cpp
│ └── mymath.hpp

# 把该文件加的所有文件 用变量DIR_LIB_SRCS表示
AUX_SOURCE_DIRECTORY(. DIR_LIB_SRCS)
# 设置编译后输出的库文件路径
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
# 将mylib文件,生成Mylib.a库文件
ADD_LIBRARY(Mylib STATIC ${DIR_LIB_SRCS})

(2) src路径下的CMakeLists.txt
└── src
├── CMakeLists.txt
└── demo.cpp

# 添加mylib路径
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/mylib)
# 生成可执行文件的路径
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
# 把该文件加的所有文件 用变量DIR_LIB_SRCS表示
AUX_SOURCE_DIRECTORY(./ DIR_SRCS)
# 生成可执行文件demo4
ADD_EXECUTABLE(demo4 ${DIR_SRCS})
# 链接Mylib文件 生成demo5
TARGET_LINK_LIBRARIES(demo4 Mylib)

(3)顶层CMakeLists.txt

# 设置最低的cmake版本
CMAKE_MINIMUM_REQUIRED(VERSION 3.10)
# 设置工程名
PROJECT(demo5)
# 添加子文件夹路径
ADD_SUBDIRECTORY(./mylib)
ADD_SUBDIRECTORY(./src)

3. 执行

# cd build && cmake .. && make
# ./bin/demo4 2 10

猜你喜欢

转载自blog.csdn.net/weixin_40437821/article/details/113468086