前言
由于最近在学习skynet服务器开发,用的是c语言写的底层框架,因此最近打算用c++重新skynet底层部分功能。由于skynet仅能在linux上运行,而之前都是在Windows上用IDE编译的c++,而linux可能会不一样,所以今天来记录一下在linux上新建一个完整c++项目并成功用命令来运行。
一、运行Hello World
-
新建个main.py文件
标准的c++语法就不提了,这里默认都会c++基础语法,主要是讲解在linux如何运行
#include <iostream>
using namespace std;
int main(){
cout <<"hello world";
return 0;
}
- 使用指令将它编译成可执行文件
g++是c++语言的编译器,如果还未安装,可以使用apt install g++(sudo权限下,centos用yum,ubuntu用apt)进行安装
g++ mian.cpp -o sunnet
main.cpp是待编译文件,“-o”指生成可执行文件的名称(我这里命名为sunnet)。如果没有报错,该指令会生成名为sunnet的可执行文件。执行命令:
./sunnet
可以看见控制台会输出Hello World。
二、用CMake构建工程
1.安装Cmake
执行命令:(centos用yum,cmake要全小写,不知道为什么我用CMake会报错)
apt-get install cmake
2.建立工程目录(自己手动新建文件夹)
在windows上使用IDE新建一个工程的时候会自动帮你生成需要的工程目录,但是为了能更好了解c++的运行过程,我们采用手动新建,一步一步来了解。先介绍标准的工程目录有哪些,基本上每个IDE生成的文件夹无外非就是以下几个:
文件夹 | 说明 |
---|---|
include | 存放头文件(.h)每个c++程序通常都由头文件(.h)和源文件组成(.cpp) |
src | 存放源文件(.cpp) |
build | 存放构建生成时生成的临时文件、可执行文件 |
CmakeLists.txt | CMake指导文件 |
3.编写CmakeLists
为什么要用cmake呢?当我们在做一个大工程的时候,不可能把所有的代码都放在一个文件里。编译多个文件的古老方法就是编写makefile,用于说明各个c++文件的依赖关系,然后用一款make软件来构建程序,make会用到makefile文件(需手动编写)和g++编译器,然而makefile的规则很复杂。因此更现代的构建工具cmake应运而生。
cmake主要分为三步:
① 先编写Cmake指导文件CmakeLists.txt
②用Cmake生成makefile文件
③make构建工程
这里我们需要关注的仅有CmakeLists.txt,以下代码展示了CmakeLists最基本写法:
# 项目名称
project (sunnet)
# CMake最低版本号要求
cmake_minimum_required (VERSION 2.8)
# 头文件目录
include_directories(include)
# 查找./src目录下的所有源文件,保存到DIR_SRCS变量
aux_source_directory(./src DIR_SRCS)
# 用C++11
add_definitions(-std=c++11)
# 指定生成目标文件
add_executable(sunnet ${DIR_SRCS})
# 库文件
find_package (Threads)
target_link_libraries (sunnet ${CMAKE_THREAD_LIBS_INIT})
这几行的主要含义就是:把include文件夹当作头文件目录,把src当成源文件目录,使用c++11的标准
三、项目实战
通过一个“学猫叫”的例子来完整说明整个流程。分别创建以下代码存放到对应的文件夹中
1.相应代码(学过语法的应该都能看懂)
//include/cat.h
class Cat{
public:
int age;
void Say();
};
//src/cat.cpp
#include <iostream>
#include "cat.h"
using namespace std;
void Cat::Say(){
cout <<"I am cat,age is " <<age <<endl;
}
//src/main.cpp
#include <iostream>
#include "cat.h"
using namespace std;
int main(){
Cat cat1;
cat1.age = 5;
Cat cat2;
cat2.age = 3;
cat1.Say();
cat2.Say();
return 0;
}
2.进入build文件夹
存放好后使用命令进入build文件夹中:
cd build
3.编译
分别执行以下两条指令完成编译:
cmake ../
make
最终运行成功后就会在build文件夹中看到这些内容:
4. 运行
执行命令:
./sunnet
输出结果:
总结
以上就是今天要讲的内容,本文仅仅简单介绍了如何在liunx搭建一个完整的c++项目工程。