1、当你搜索到这篇文章的时候,估计你已经或多或少的了解了it++的库,并想要使用它,本文将教你如何在vscode环境下使用itpp。
2、本文只想使用itpp库,因此并没有考虑itpp库依赖的外部库,但是即使没有那些外部库,也能使用itpp库,只是功能会减少。
3、itpp官方网站:Welcome to IT++! (sourceforge.net)
4、可以基于itpp的官方网站查看一些安装说明或者在上面下载itpp的源文件
1 下载vscode及相关和itpp库压缩包
1.1 下载vscode及相关
1. 下载vscode比较简单,可以查看其它网上资源,此处省略
2. 下载插件:C/C++、中文插件、cmake、cmake tools
3. 下载MinGW编译器,然后安装以及添加到环境变量
1.2 下载itpp压缩包
2 下载CMAKE
下载了插件之后,还需要在官网(Download CMake)下载cmake
下载后缀为.msi的稳定版本即可
安装的时候记得勾选Add CMake to the system PATH for all users,这样就不需要自己配置环境变量了
3 MinGW
在MinGW下的bin文件夹找到mingw32-make.exe,将其再复制一份到该文件夹下,并命名为make.exe。这样做是为了后面执行make操作时,可以输入make,不这样做的话就需要输入mingw32-make
4 生成itpp库文件
打开vscode并进入itpp-4.3.1(我下载的最新版)文件夹,在该目录下创建build文件夹
1. 在终端里面输入
mkdir build
2. 然后在进入build文件夹(终端中输入)
cd build
3. 在该文件夹下使用cmake命令(终端中输入),第一次执行cmake命令时,一定是输入下面这个,后续在执行的时候,可以直接使用cmake
cmake -G "MinGW Makefiles" ..
4. 等待cmake完成,可以在build目录下看到makefile文件
5. 在build路径下执行make命令(终端中输入make),等待动态库生成完成,然后可以在build目录下的itpp文件夹下看到生成的动态库(libitpp.dll)
6. 在itpp-4.3.1文件夹下创建lib文件夹(类似创建build文件夹),将生成的libitpp.dll和libitpp.dll.a复制到lib文件夹中,
7. 将下面两个文件复制到itpp-4.3.1/itpp文件夹中(不是build下面的itpp)
8. 将lib文件夹的路径添加到环境变量中(如果不这样,可能加载不到动态库)
win+r,然后输入sysdm.cpl进入系统属性
点击环境变量,在系统变量下找到PATH,双击,然后在里面点击新建,将lib文件夹的目录复制下去(路径格式为*/*/lib)
5 测试
1. 在itpp-4.3.1文件夹下新建一个.cpp文件
2. 输入测试代码(这里提供一个简单地)
另外,由于没有包含itpp的其他外部依赖库,有可能有些功能用不了
#include <iostream>
#include "itpp\base\vec.h"
using namespace std;
int main()
{
itpp::vec a(10);
for (int i = 0; i < 10;i++)
{
a(i) = i;
}
cout << "itpp vec: " << endl;
cout << a << std::endl;
system("pause");
return 0;
}
3. 修改itpp-4.3.1文件下的CMakeLists.txt,并在itpp-4.3.1下创建build2文件夹(单纯想把之前的build文件夹留下)
将CMakeLists.txt里面内容改为
cmake_minimum_required(VERSION 3.8)
project(test)
set(CMAKE_CXX_STANDARD 11)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
include_directories(${PROJECT_SOURCE_DIR})
link_directories(${PROJECT_SOURCE_DIR}/lib)
add_executable(test01 test01.cpp)
target_link_libraries(test01 itpp)
4. 进入build2目录,并在该路径下执行cmake
5. 等待cmake构建完成,然后执行make命令
6. 进入bin目录下执行程序
写在最后
在使用过程中,可能会遇到各种问题,你可以在下面留言,或者在网上查找解决方法
谨慎操作,因为本文而造成的损失,我可不负责哟~~~