基于GMSSL实现的sm2加解密在vscode实现(C++)(CMake编译及命令行编译)(自用)

上一次使用vscode编译成功了基于GMSSL实现的sm2加解密,这次尝试用CMake和命令行对本工程进行编译。
上次博客:https://blog.csdn.net/QINGCHIwarm/article/details/135162062?spm=1001.2014.3001.5501

CMake编译

使用流程

首先大致介绍一下使用CMake的使用流程:
1.编写程序
2.新建CMakeLists.txt(记住一个字母都不能错)
3.编写CMakeLists.txt
4.运行CMake

CMakeLists.txt的编写和执行

重点就是在CMakeLists.txt的编写上,以下是我写的CMakeLists.txt:

cmake_minimum_required(VERSION 3.20.0)//cmake最小版本约束
project("SM2_test_CMake" VERSION 0.0.1)//工程名(作用不大)

#添加头文件目录
include_directories(include include/openssl)
#添加源文件
add_executable(sm2test_cmake src/test.cpp src/gmutil.cpp)
#添加库文件路径
link_directories(lib)
#添加链接的库文件
target_link_libraries(sm2test_cmake ${CMAKE_SOURCE_DIR}/lib/libcrypto.a)

其中最主要就是配置头文件路径,添加所需编译的源文件,添加库文件路径,链接库文件。

为了工程的简洁性,我们使用外部构建CMake,在终端输入命令如下:

mkdir build//新建build文件夹
cd build//进入build文件夹
cmake ..//因为进入到build文件夹了,CMakeLists.txt在上一级目录,所以使用cmake ..
make//执行并生成可执行文件
./sm2test_cmake//执行可执行文件生成结果

运行情况如下图所示:基于GMSSL实现的sm2加解密在vscode实现(C++)(CMake编译及命令行编译)(自用)_第1张图片
这里补充一点,如果在执行到make指令时报错要把build文件夹下的所有东西删除,嫌麻烦的可以在build文件夹下用如下命令行:

cd build//转到build文件夹下,已经在build的不用输入
rm -rf *//清除所有文件

命令行编译

命令行的编译超级简单,只需要在工程文件夹下输入命令行即可:
主要写法是这样的:

g++ -o 输出的可执行文件名 ./src/源文件1.cpp ./src/源文件2.cpp -I头文件路径1 -I头文件路径2 -L库目录 -l链接库名字(掐头去尾)

具体应用到这里就是这样的:

g++ -o sm2minglinghang ./src/test.cpp ./src/gmutil.cpp -Iinclude -Iinclude/openssl -Llib -lcrypto

执行后生成可执行文件,运行可执行文件生成结果:

./sm2minglinghang

生成结果如下:基于GMSSL实现的sm2加解密在vscode实现(C++)(CMake编译及命令行编译)(自用)_第2张图片

你可能感兴趣的:(vscode,c++,ide)