前言
這是我的第一篇簡(jiǎn)書,以后要養(yǎng)成記筆記的習(xí)慣!
正文
CMake 是一個(gè)開源的跨平臺(tái)的構(gòu)建測(cè)試和打包工具,可以方便地用在自己的項(xiàng)目管理中.在 Windows 平臺(tái)下,
visual studio 可以幫我們完成一切編譯鏈接的工作.在 Linux 環(huán)境下需要我們自己完成編譯鏈接的過(guò)程,通過(guò)編寫 makefile 指明編譯過(guò)程和鏈接關(guān)系.而 CMake 就是這樣的一種工具,通過(guò)編寫 CMakeLists.txt,相當(dāng)于編寫 makefile 的 makefile,抽象和簡(jiǎn)化我們編寫 makefile 的過(guò)程.下面給出我在實(shí)際項(xiàng)目中用到的一個(gè) CMakeLists.txt 范例.
目錄樹
├─ inc
│ ├── a.h
│ ├── b.h
│ └── c.h
├─ lib
│ ├── liba.a
│ └── libb.a
├─ src
│ ├── c.cpp
│ └── main.cpp
└─ CMakeLists.txt
inc文件夾存放頭文件,lib文件夾存放需要鏈接的第三方靜態(tài)庫(kù)文件,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}) #鏈接靜態(tài)庫(kù)目錄
AUX_SOURCE_DIRECTORY(./src SRC_DIR) #源文件目錄
ADD_EXECUTABLE(${PROJECT_NAME} ${SRC_DIR})
TARGET_LINK_LIBRARIES(${PROJECT_NAME} a)
TARGET_LINK_LIBRARIES(${PROJECT_NAME} b)
后記
作為一名不太會(huì)書寫和表達(dá)的工科生,希望看到的朋友們多多指正!共勉!