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");
#endif
while(1){}
}
work.h
#ifndef WORK_H
#define WORK_H
class 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命令。