【Lars教程目录】
二、项目目录构建
首先在一切开始之前,我们应该将最基本的项目架构创建出来。
1)创建Lars代码总目录
$cd ~/
$mkdir Lars
创建一个模块Lars_reactor
lars_reactor是一个网络IO库,是我们要实现的,我们就先以它作为第一个子项目进行构建。
$mkdir lars_reactor
然后在lars_reactor模块下创建一系列文件,如下
.
├── example
│ └── testlib
│ ├── hello_lars.cpp
│ └── Makefile
├── include
│ └── tcp_server.h
├── lib
├── Makefile
└── src
└── tcp_server.cpp
3)代码编写
src/tcp_server.c
#include
void lars_hello()
{
std::cout <
}
src/tcp_server.h
#pragma once
void lars_hello();
我们要生成一个lib库文件liblreactor.a,来提供一些reactor模块的API接口。
生成liblreactor.a的Makefile如下
lars_reactor/Makefile
TARGET=lib/liblreactor.a
CXX=g++
CFLAGS=-g -O2 -Wall -fPIC -Wno-deprecated
SRC=./src
INC=-I./include
OBJS = $(addsuffix .o, $(basename $(wildcard $(SRC)/*.cpp)))
$(TARGET): $(OBJS)
mkdir -p lib
ar cqs $@ $^
%.o: %.cpp
$(CXX) $(CFLAGS) -c -o $@ $< $(INC)
.PHONY: clean
clean:
-rm -f src/*.o $(TARGET)
4)编译
$cd lars/lars_reactor/
$make
$g++ -g -O2 -Wall -fPIC -Wno-deprecated -c -o src/tcp_server.o src/tcp_server.cpp -I./include
mkdir -p lib
ar cqs lib/liblreactor.a src/tcp_server.o
我们会在lib下得到一个liblreactor.a库文件。
5)调用liblreactor.a接口
$cd lars/lars_reactor/
$mkdir example/testlib -p
$cd example/testlib/
hello_lars.cpp
#include "tcp_server.h"
int main() {
lars_hello();
return 0;
}
Makefile
CXX=g++
CFLAGS=-g -O2 -Wall -fPIC -Wno-deprecated
INC=-I../../include
LIB=-L../../lib -llreactor
OBJS = $(addsuffix .o, $(basename $(wildcard *.cc)))
all:
$(CXX) -o hello_lars $(CFLAGS) hello_lars.cpp $(INC) $(LIB)
clean:
-rm -f *.o hello_lars
编译
$ make
g++ -o hello_lars -g -O2 -Wall -fPIC -Wno-deprecated hello_lars.cpp -I../../include -L../../lib -llreactor
执行
$ ./hello_lars
lars hello
我们现在一个基本的项目目录就构建好了,大致如下
Lars/
├── lars_reactor
│ ├── example
│ │ └── testlib
│ │ ├── hello_lars
│ │ ├── hello_lars.cpp
│ │ └── Makefile
│ ├── include
│ │ └── tcp_server.h
│ ├── lib
│ │ └── liblreactor.a
│ ├── Makefile
│ └── src
│ ├── tcp_server.cpp
│ └── tcp_server.o
└── README.md
关于作者:
作者:Aceld(刘丹冰)
原创声明:未经作者允许请勿转载, 如果转载请注明出处