cmake 学习
1、xlog文件夹下的内容
CMakeLists.txt 文件内容
# CMakeLists.txt cmake文件名大小写不敏感
#指定cmake最低版本
cmake_minimum_required(VERSION 3.20)
#构建项目的名称
project(first_cmake)
# 创建各种类型的库
# [STATIC | SHARED | MODULE]:可选参数
# STATIC:创建静态库,静态库在链接时会被完整地复制到可执行文件中。
# SHARED:创建共享库(动态链接库),共享库在运行时动态加载,多个程序可以共享同一个共享库。
# MODULE:创建模块库,通常用于插件系统,不会被链接到可执行文件中,而是在运行时通过特定机制加载。如果不指定该参数,CMake 会根据 BUILD_SHARED_LIBS 变量的值来决定创建静态库还是共享库。
add_library(xlog STATIC xlog.cpp xlog.h)
#构建执行程序
# add_executable(first_cmake 101first_cmake.cpp)
xlog.cpp 文件内容
#include "xlog.h"
#include <iostream>
using namespace std;
XLog::XLog() {
cout << "Create Xlog" << endl;
}
xlog.h 文件内容
//xlog.h
#ifndef XLOG_H
#define XLOG_H
class XLog
{
public:
XLog();
};
#endif
mkdir build
cd build
cmake ..
cd ..
cmake --build build
可看到libxlog.a的文件出现了,成功了。
2、test_xlog文件夹下的内容
CMakeLists.txt 文件内容
# CMakeLists.txt cmake文件名大小写不敏感
#指定cmake最低版本
cmake_minimum_required(VERSION 3.20)
#构建项目的名称
project(test_xlog)
# 注意在设定查找时是根据 当前cmakelists.txt的相对路径进行查找的
#指定头文件查找路径
include_directories("../xlog")
#指定库查找路径
link_directories("../xlog/build")
#构建执行程序
add_executable(test_xlog test_xlog.cpp)
#指定加载的库 (要放置 构建执行程序后面, 因为这是加载执行程序的依赖库)
target_link_libraries(test_xlog xlog)
test_xlog.cpp 文件内容
#include <iostream>
#include "xlog.h"
using namespace std;
int main(){
XLog log;
cout<<"test xlog"<<endl;
return 0;
}
run.sh 的内容,两个只是cd路径不同。
因为懒得敲命令
cd /root/UniSecurity/cmake_xue/test_xlog
rm -r build
mkdir build
cd build
cmake ..
cd ..
cmake --build build