linux系统,使用cmake 编译C++代码,如何生成静态库。
xlog文件夹下面是生成静态库所需要的文件。
test_xlog文件夹下面是调用静态库所需要的文件。
xlog文件夹下的文件:
1、CMakeLists.txt
#CMakeLists.txt
# 设置:版本
cmake_minimum_required(VERSION 3.20)
# 定义 :项目名称
project(xlog)
#添加一个库(静态)
add_library(xlog STATIC xlog.cpp xlog.h)
2、xlog.cpp
#include "xlog.h"
#include <iostream>
using namespace std;
XLog::XLog()
{
cout<<"Create XLog"<<endl;
};
3、xlog.h
//xlong.h
#ifndef XLOG_H
#define XLOG_H
class XLog
{
public:
XLog();
};
#endif
在xlog文件夹下使用编译命令
cmake -S . -B build
cmake --build build
图中libxlog.a就是生成的静态库,其他没有用可以删除了。
test_xlog 文件夹下的文件:
1、CMakeLists.txt
# CMakeLists.txt 102
# 最低版本要求
cmake_minimum_required(VERSION 3.20)
# 当前项目名称
project(test_xlog)
#指定头文件查找路径
include_directories("../xlog")
# 指定库(当前为静态库 .a文件 )查找路径
link_directories("../xlog/build")
# 添加执行文件
add_executable(test_xlog test_xlog.cpp)
# 指定加载的库(当前test_xlog 要与 添加执行文件中的test_xlog 一样才行)
# xlog 是要跟生成静态库时 CMakeLists.txt 文件中设置add_librar添加静态库时第一个参数一致才行
target_link_libraries(test_xlog xlog)
2、test_xlog.cpp
#include <iostream>
#include "xlog.h"
using namespace std;
int main()
{
XLog log123;
cout << "test xlog" << endl;
return 0;
}