前言
这是我的第一篇简书,以后要养成记笔记的习惯!
正文
CMake 是一个开源的跨平台的构建测试和打包工具,可以方便地用在自己的项目管理中.在 Windows 平台下,
visual studio 可以帮我们完成一切编译链接的工作.在 Linux 环境下需要我们自己完成编译链接的过程,通过编写 makefile 指明编译过程和链接关系.而 CMake 就是这样的一种工具,通过编写 CMakeLists.txt,相当于编写 makefile 的 makefile,抽象和简化我们编写 makefile 的过程.下面给出我在实际项目中用到的一个 CMakeLists.txt 范例.
目录树
├─ inc
│ ├── a.h
│ ├── b.h
│ └── c.h
├─ lib
│ ├── liba.a
│ └── libb.a
├─ src
│ ├── c.cpp
│ └── main.cpp
└─ CMakeLists.txt
inc文件夹存放头文件,lib文件夹存放需要链接的第三方静态库文件,src文件夹存放源文件,CMakeLists.txt 放在根目录.
CMakeLists.txt
#cmake version
CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
#define project name
PROJECT(aaa)
SET(CMAKE_CXX_FLAGS "-std=c++11")
SET(CMAKE_BUILD_TYPE "Debug")
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
SET(INC_DIR ./inc)
SET(LINK_DIR ./lib)
INCLUDE_DIRECTORIES(${INC_DIR}) #包含的头文件目录
LINK_DIRECTORIES(${LINK_DIR}) #链接静态库目录
AUX_SOURCE_DIRECTORY(./src SRC_DIR) #源文件目录
ADD_EXECUTABLE(${PROJECT_NAME} ${SRC_DIR})
TARGET_LINK_LIBRARIES(${PROJECT_NAME} a)
TARGET_LINK_LIBRARIES(${PROJECT_NAME} b)
后记
作为一名不太会书写和表达的工科生,希望看到的朋友们多多指正!共勉!