目录
- cmake下载
- linux使用cmake创建C++项目
- cmake编译运行
- windows使用cmake创建C++项目
cmake下载
cmake支持linux、windows等跨平台使用。
linux安装
sudo apt install cmake
windows下载
cmake官网下载地址,选择Windows x64 ZIP版本:https://cmake.org/download/。
linux使用cmake创建C++项目
创建一个简单的C++项目,功能包含头文件、源文件、库文件,加载lib库等,目录结构如下:
.
├── build
├── CMakeLists.txt
├── include
│ ├── st.h
│ └── work.h
├── lib
│ └── libst.a
├── main.cpp
└── src
└── work.cpp
1、build:构建目录,生成makefile文件和可执行文件的目录,初始为空。
2、CMakeLists.txt:cmake文件。
3、include:头文件目录。
4、lib:库文件目录,这里以协程库libst为例。
5、src:源文件目录。
重点介绍CMakeLists.txt文件:
cmake_minimum_required(VERSION 2.8) #设置cmake最低版本
project("Test_CMK" CXX) #设置项目名称
option(UBUSYS "ubuntu system" OFF) #条件编译选项,默认OFF,cmake .. -DUBUSYS=ON进行cmake时,选项置为ON(true)
SET(PREFIX ${CMAKE_CURRENT_SOURCE_DIR})#设置普通变量,CMAKE_CURRENT_SOURCE_DIR为当前cmake文件目录
SET(BINDIR ${PREFIX})
message (">>> pwd = ${PREFIX}")#打印变量if(UBUSYS)add_definitions(-D_UBUSYS_) # 宏定义 _UBUSYS_,类似代码里的#define
endif()# 添加依赖头文件目录
SET(INCDIR${PREFIX}/include
)
INCLUDE_DIRECTORIES(${INCDIR})SET(SRCS${PREFIX}/main.cpp
)SET(SRCS ${SRCS}${PREFIX}/src/work.cpp
)#添加依赖库目录
SET(LIBDIR${PREFIX}/lib
)
LINK_DIRECTORIES(${LIBDIR})#添加依赖库
SET(LIB_SO-lst
)SET(RUN_MAIN "Test_CMK")
#设置C++编译选项
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++11 -march=native -Wall")# 添加可执行文件,并配相关文件
ADD_EXECUTABLE(${RUN_MAIN} ${SRCS})TARGET_LINK_LIBRARIES(${RUN_MAIN} ${LIB_SO})#添加依赖库# 安装可执行文件到指定位置,并指定权限
INSTALL(TARGETS ${RUN_MAIN} DESTINATION ${BINDIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE WORLD_EXECUTE)
main.cpp
#include "work.h"
#include "st.h"int main()
{if(st_init() == 0){printf("st initialize success\n");}work mwork;mwork.dowork();#ifdef _UBUSYS_printf("ubuntu system\n");
#endifwhile(1){}
}
work.h
#ifndef WORK_H
#define WORK_Hclass work
{
public:work();void dowork();
};#endif // WORK_H
work.cpp
#include "work.h"
#include <stdio.h>work::work()
{}void work::dowork()
{printf("dowork.\n");
}
cmake编译运行
##当前在CMakeLists.txt所在目录
cd build/ #切换到构建目录
cmake .. -DUBUSYS=ON #预定义宏
make -j #编译,当前文件夹生成可执行文件Test_CMK
./Test_CMK #运行#打印
st initialize success
dowork.
ubuntu system
windows使用cmake创建C++项目
cmake是跨平台的,在windows下一样可以使用,上述文件目录拷贝到windows下,cd切换到build目录下,执行:
cmake ..
在build目录生成Test_CMK.sln,使用VS打开即可编译运行(上面的libst库是linux的,换成一个windows下的库测试即可),windows下不能使用make命令。