网站建设考核标准,孝感市网站建设,wordpress文章页,软件开发知识在Linux开发过程中#xff0c;难免会用到CMake来构建你的代码。本文将说明如何构建自己的代码#xff0c;将自己的代码变为共享库#xff0c;共其他代码使用。 文章目录在Linux开发过程中#xff0c;难免会用到CMake来构建你的代码。本文将说明如何构建自己的代码#xff…在Linux开发过程中难免会用到CMake来构建你的代码。本文将说明如何构建自己的代码将自己的代码变为共享库共其他代码使用。 文章目录在Linux开发过程中难免会用到CMake来构建你的代码。本文将说明如何构建自己的代码将自己的代码变为共享库共其他代码使用。CMake简述一、构建你的第一个CMake工程2.1 工程结构2.2 文件内容三、开始构建四、构建后build文件夹结构五、安装共享库六、总结关注“测试开发自动化” 弓中皓获取更多学习内容 CMake简述
如果有朋友在Linux端使用C/C/Fortran/Java这几种语言开发相信对CMake构建工具不会陌生也是大多数程序员必须掌握的一项代码构建技能。 之所以Cmake会进入大多数程序员的视线为大多数程序员使用主要是因为CMake主要有如下特点
原生支持 C/C/Fortran/Java 的相依性的自动分析功能免除了程序员对代码依赖的调整对整个开发工作帮助很大。支持 SWIG、Qt、FLTK 开发框架。支持跨平台编译这是CMake名字的来源。CMake需要用户用CMake规范的语法编写CMake脚本该语法简单易用入门极其顺手。能够转换特殊平台的 IDE 项目文档如xcode。与Dart、CTest 和 CPack 集成可以组成自动化的构建系统。
需要注意的是使用CMake程序员必需编写好CMake脚本CMAkeLists.txt对于一些复杂的项目可能需要编写CMake模块但对于构建过程而言则是极其简单的。 一、构建你的第一个CMake工程
首先要是知道一个标准工程文件夹的结构应该是这样的
doc文件夹存放工程的文档src文件夹存放源文件bin文件夹存放构建后的目标文件
好了下面我们就来搭建一个简单的工程使用CMake来构建我们构建的前提都是在Linux系统下进行示例的。因此大家学习的时候最好在Linux系统下学习。
2.1 工程结构
我们在自己的Linux系统的home路径下或你自己的系统创建一个它文件夹并在对应的文件夹下建立对应的文件。整个t3文件夹的结构如下所示 t3
├── build
├── CMakeLists.txt
└── lib├── CMakeLists.txt├── hello.cpp└── hello.h2.2 文件内容
上面创建了空的文件下面我们就要对文件中的内容进行补充
t3/CMakeLists.txt文件 project(hellolib) # 工程名 add_subdirectory(lib) # 在工程目录下(build文件夹)生成一个lib文件夹并将动态、静态文件存储在build/lib文件夹下 t3/lib/CMakeLists.txt文件 set(LIBHELLO_SRC hello.cpp) add_library(hello SHARED ${LIBHELLO_SRC}) # 生成一个hello.so的动态库文件 add_library(hello_static STATIC ${LIBHELLO_SRC}) # 生成一个hello_static.o的静态库文件 #为使生成的动态库和静态库名称一致需要使用 set_target_properties set_target_properties(hello_static PROPERTIES OUTPUT_NAME “hello”) # 将hello_static重命名为hello# 可得到libhello.so 和 libhello.a set_target_properties(hello PROPERTIES VERSION 1.2 SOVERSION 1) # 设置生成的.so的版本为1.2 INSTALL(TARGETS hello hello_static # 将动态库libhello.so、libsello.a安装到/usr/lib中 LIBRARY DESTINATION lib ARCHIVE DESTINATION lib ) INSTALL(FILES hello.h DESTINATION include/hello) # 将头文件安装到/usr/include/hello中 hello.cpp文件
#include iostream
void HelloFunc()
{std::cout hello world std::endl;
}hello.h文件
#ifndef HELLO_H
#define HELLO_H
#include iostream
void HelloFunc();
#endif三、开始构建
这里主要采用的是外部构建的方式。外部构建即在将构建的信息生成在build文件夹中也是极力推荐这样构建所以内部构建这里就不作过多的解释。 在终端中输入如下Linux指令
cd build
cmake .. make四、构建后build文件夹结构
构建后build文件夹结构如下所示 build
├── CMakeCache.txt
├── CMakeFiles
├── cmake_install.cmake
├── Makefile
└── lib├── CMakeFiles├── cmake_install.cmake├── Makefile├── libhello.a # set_target_properties(hello_static PROPERTIES OUTPUT_NAME hello) ├── libhello.so # set_target_properties(hello_static PROPERTIES OUTPUT_NAME hello) ├── libhello.so.1 # set_target_properties(hello PROPERTIES VERSION 1.2 SOVERSION 1)└── libhello.so.1.2 # set_target_properties(hello PROPERTIES VERSION 1.2 SOVERSION 1)五、安装共享库
如果你希望其他人可以直接仅通过.h文件即可调用的你的代码那么你就需要安装共享库。作用是将头文件和共享库安装到系统目录/usr/lib 和/usr/include/hello可以直接通过includehello.h的方式使用相当于Windows的环境变量。在build文件夹下输入
make install六、总结
至此我们就完成了我们的共享库的构建后续会讲解如何使用共享库来运行我们的代码。 关注“测试开发自动化” 弓中皓获取更多学习内容