C++各类第三方库的编译使用

在运行前,确认Microsoft Visual Studio的路径,和配置QT的环境变量(ruca):

1.eigen-3.4.0

3.4.0 · libeigen / eigen · GitLab下载源码。在源码同级新建文本

在win编译:前两个是vs和qt的路径,vs路径要根据自己的安装位置做更改,创建文本添加下列脚本,修改成.bat文件运行。

call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
call "%QT_HOME%\msvc2017_64\bin\qtenv2.bat"

set path_script=%~dp0

cd /D %path_script%
rd /s/q "%path_script%\build"
rd /s/q "%path_script%\winx"

md "%path_script%\build"
cd /D "%path_script%\build"


cmake  -G "Visual Studio 15 2017" -T host=x64 -A x64 -DCMAKE_DEBUG_POSTFIX="d" -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=%path_script%/winx  ../eigen-3.4.0
cmake --build . --config Debug && cmake --build ./ --config Debug --target install
cmake --build . --config Release && cmake --build ./ --config Release --target install

 在winx文件中是编译的共享库。

在linux编译:修改成.sh文件。

export QT_TOOLCHAIN="~/opt/Qt5.12.12/5.12.12/gcc_64"
export PATH="${QT_TOOLCHAIN}:${PATH}"
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH


path_current=`pwd`
path_script=$(cd "$(dirname "$0")"; pwd)
rm -rf ${path_script}/build
rm -rf ${path_script}/unix

MY_DEFINITIONS="-DCMAKE_C_FLAGS=\"-fPIC -Wall\""
MY_DEFINITIONS="${MY_DEFINITIONS} -DCMAKE_INSTALL_PREFIX=${path_script}/unix"
MY_DEFINITIONS="${MY_DEFINITIONS} -DBUILD_SHARED_LIBS=OFF"
MY_DEFINITIONS="${MY_DEFINITIONS} -DCMAKE_BUILD_TYPE=Release"
mkdir -p ${path_script}/build && cd ${path_script}/build && echo ${MY_DEFINITIONS} | xargs cmake ../eigen-3.4.0 && make clean && make && make install

执行如下:build_unix是文件名

chmod +x build_unix.sh 
./build_unix.sh

在linux下是编译的共享库。

2.openssl

在下载源码最好的1.1.1f和在Index of /pub/nasm/releasebuilds/2.14.02/win64下绿色面安装把他们两放在同一个目录下:

 在win编译:前两个是vs和qt的路径,vs路径要根据自己的安装位置做更改,第三个事nasm的路径,如果放在同一个目录下不做修改,创建文本添加下列脚本,修改成.bat文件运行。在运行之前要安装perl用于编译,perl下载地址:https://qt-mirror.dannhauer.de/development_releases/prebuilt/perl/strawberry-perl-5.22.1.3-32bit.msi

call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
call "%QT_HOME%\msvc2017_64\bin\qtenv2.bat"
call "%~dp0\nasm-2.14.02-win64\nasm.bat"

set path_script=%~dp0

set libpath=%path_script%\winx
rd /s/q "%libpath%"
rd /s/q "%path_script%"\build
md "%path_script%\build"
cd /D "%path_script%\build"
perl ../openssl_1_1_1f/Configure VC-WIN64A no-tests --prefix=%libpath% --openssldir=%libpath%
nmake clean
nmake && nmake install

 在winx文件中是编译的共享库。

 在linux编译:修改成.sh文件。

#!/bin/bash
path_current=`pwd`
path_script=$(cd "$(dirname "$0")"; pwd)

export QT_TOOLCHAIN="${QT_HOME}/gcc_64"
export PATH="${QT_TOOLCHAIN}:${PATH}"
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

rm -rf ${path_script}/unix

libpath=${path_script}/unix
cd ${path_script}/openssl_1_1_1f/ && find ./ -name '*.sh'|xargs chmod a+x && chmod a+x ../openssl_1_1_1f/config && ../openssl_1_1_1f/config -fPIC no-tests --prefix=${libpath} --openssldir=${libpath}  && make clean && make && make install && make clean

执行如下:build_unix是文件名

chmod +x build_unix.sh 
./build_unix.sh

3.paho.mqtt.c

Releases · eclipse-paho/paho.mqtt.c下载源码

下载到如下:

在win编译:前两个是vs和qt的路径,vs路径要根据自己的安装位置做更改,创建文本添加下列脚本,修改成.bat文件运行。

call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
call "%QT_HOME%\msvc2017_64\bin\qtenv2.bat"

set path_script=%~dp0

cd /D %path_script%
rd /s/q "%path_script%\build"
rd /s/q "%path_script%\winx"

md "%path_script%\build"
cd /D "%path_script%\build"


cmake  -G "Visual Studio 15 2017" -T host=x64 -A x64 -DCMAKE_DEBUG_POSTFIX="d" -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=%path_script%/winx  ../opencv-4.10.0
cmake --build . --config Debug && cmake --build ./ --config Debug --target install
cmake --build . --config Release && cmake --build ./ --config Release --target install

  在winx文件中是编译的共享库。

   在linux编译:修改成.sh文件。

#!/bin/bash
path_current=$(pwd)
path_script=$(cd "$(dirname "$0")"; pwd)

export QT_TOOLCHAIN="${QT_HOME}/gcc_64"
export PATH="${QT_TOOLCHAIN}:${PATH}"
export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"

path_install="${path_script}/unix"
rm -rf "${path_install}"
mkdir -p "${path_install}"

MY_DEFINITIONS="-DCMAKE_FIND_ROOT_PATH:PATH=${path_script}/../openssl/unix;${path_script}/../zlib/unix"
MY_DEFINITIONS+=" -DPAHO_WITH_SSL=TRUE"
MY_DEFINITIONS+=" -DOPENSSL_ROOT_DIR:PATH=${path_script}/../openssl/unix"
MY_DEFINITIONS+=" -DCMAKE_INSTALL_PREFIX=${path_install}"
MY_DEFINITIONS+=" -DCMAKE_BUILD_TYPE=Release"

build_dir="${path_script}/build"
rm -rf "${build_dir}"
mkdir -p "${build_dir}" && cd "${build_dir}"

cmake ${MY_DEFINITIONS} ../paho.mqtt.c || { echo "CMake configuration failed"; exit 1; }
make clean || { echo "Make clean failed"; exit 1; }
make || { echo "Make failed"; exit 1; }
make install || { echo "Make install failed"; exit 1; }

执行如下:build_unix是文件名

chmod +x build_unix.sh 
./build_unix.sh

4.opencv

源码下载地址:Releases · opencv/opencv

下载到;

 在win编译:前两个是vs和qt的路径,vs路径要根据自己的安装位置做更改,创建文本添加下列脚本,修改成.bat文件运行。

call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
call "%QT_HOME%\msvc2017_64\bin\qtenv2.bat"

set path_script=%~dp0

cd /D %path_script%
rd /s/q "%path_script%\build"
rd /s/q "%path_script%\winx"

md "%path_script%\build"
cd /D "%path_script%\build"


cmake  -G "Visual Studio 15 2017" -T host=x64 -A x64 -DCMAKE_DEBUG_POSTFIX="d" -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=%path_script%/winx  ../opencv-4.10.0
cmake --build . --config Debug && cmake --build ./ --config Debug --target install
cmake --build . --config Release && cmake --build ./ --config Release --target install

   在linux编译:修改成.sh文件。

#!/bin/bash

export QT_TOOLCHAIN="${QT_HOME}/gcc_64"
export PATH="${QT_TOOLCHAIN}:${PATH}"
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH


path_current=`pwd`
path_script=$(cd "$(dirname "$0")"; pwd)
rm -rf ${path_script}/build
rm -rf ${path_script}/unix

MY_DEFINITIONS="-DCMAKE_C_FLAGS=\"-fPIC -Wall\""
MY_DEFINITIONS="${MY_DEFINITIONS} -DCMAKE_INSTALL_PREFIX=${path_script}/unix"
MY_DEFINITIONS="${MY_DEFINITIONS} -DBUILD_SHARED_LIBS=OFF"
MY_DEFINITIONS="${MY_DEFINITIONS} -DCMAKE_BUILD_TYPE=Release"
mkdir -p ${path_script}/build && cd ${path_script}/build && echo ${MY_DEFINITIONS} | xargs cmake ../opencv-4.10.0 && make clean && make && make install

执行如下:build_unix是文件名

chmod +x build_unix.sh 
./build_unix.sh

5.QXlsx

 在Releases · QtExcel/QXlsx下载源码

下载到如下:

在win编译:前两个是vs和qt的路径,vs路径要根据自己的安装位置做更改,创建文本添加下列脚本,修改成.bat文件运行。

call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
call "%QT_HOME%\msvc2017_64\bin\qtenv2.bat"

set path_script=%~dp0

rd /s/q "%path_script%\winx"
cd /D %path_script%

rd /s/q "%path_script%\build"
md "%path_script%\build"
cd /D "%path_script%\build"
cmake  -G "Visual Studio 15 2017" -A x64 -T host=x64 -DCMAKE_DEBUG_POSTFIX="d" -DMYSQL_ROOT_DIR="%path_script%/../mysql/winx" -DOPENSSL_ROOT_DIR="%path_script%/../openssl/winx" -DCMAKE_INSTALL_PREFIX=%path_script%/winx  ../QXlsx-1.3.57
cmake --build . --config Debug && cmake --build . --config Debug --target install
cmake --build . --config Release && cmake --build ./ --config Release --target install

  在winx文件中是编译的共享库。

   在linux编译:修改成.sh文件。

#!/bin/bash
path_current=`pwd`
path_script=$(cd "$(dirname "$0")"; pwd)

export QT_TOOLCHAIN="${QT_HOME}/gcc_64"
export PATH="${QT_TOOLCHAIN}:${PATH}"
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH


export PATH=$PATH:$path_script
export PATH=${QT_TOOLCHAIN}/bin:$PATH
export PATH=$path_script/tools:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${QT_TOOLCHAIN}/lib

rm -rf ${path_script}/build
rm -rf ${path_script}/unix

MY_DEFINITIONS="-DMYSQL_ROOT_DIR:PATH=${path_script}/../mysql/unix"
MY_DEFINITIONS="${MY_DEFINITIONS} -DOPENSSL_ROOT_DIR:PATH=${path_script}/../openssl/unix"
MY_DEFINITIONS="${MY_DEFINITIONS} -DCMAKE_INSTALL_PREFIX=${path_script}/unix"
MY_DEFINITIONS="${MY_DEFINITIONS} -DCMAKE_BUILD_TYPE=Release"
#MY_DEFINITIONS="${MY_DEFINITIONS} -DCMAKE_BUILD_TYPE=Debug"
mkdir ${path_script}/build && cd ${path_script}/build && echo ${MY_DEFINITIONS}|xargs cmake ../QXlsx-1.3.57 && make clean && make && make install

if [[ -d ${path_script}/unix/lib64 ]]; then
   mv ${path_script}/unix/lib64 ${path_script}/unix/lib
fi

执行如下:build_unix是文件名

chmod +x build_unix.sh 
./build_unix.sh

6. MySql

需要到ssl加密,在编译前要先编译ssl库

 在Release mysql-5.7.44 · mysql/mysql-server下载源码

在win编译:前两个是vs和qt的路径,vs路径要根据自己的安装位置做更改,创建文本添加下列脚本,修改成.bat文件运行。ssl的共享库要在当前目录的上一级目录下的openssl的winx文件夹内

call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
call "%QT_HOME%\msvc2017_64\bin\qtenv2.bat"

set path_script=%~dp0
set PATH=%path_script%/../openssl/winx/bin;%PATH%

cd /D %path_script%

rd /s/q "%path_script%\winx"
rd /s/q "%path_script%\build"
md "%path_script%\build"
cd /D "%path_script%\build"
cmake -G "Visual Studio 15 2017" -A x64 -T host=x64 -DOPENSSL_ROOT_DIR="%path_script%/../openssl/winx"  -DWITHOUT_SERVER=ON -DWITH_UNIT_TESTS=OFF  -DWITH_DEBUG=OFF  -DCMAKE_CXX_STANDARD=11 -DCMAKE_CXX_STANDARD_REQUIRED=ON -DCMAKE_INSTALL_PREFIX=%path_script%/winx  ../mysql-5.6.51
cmake --build . --config Release --target mysqlclient && cmake --build . --config Release --target install

   在linux编译:修改成.sh文件。

#!/bin/bash
export QT_TOOLCHAIN="${QT_HOME}/gcc_64"
export PATH="${QT_TOOLCHAIN}:${PATH}"
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

path_current=`pwd`
path_script=$(cd "$(dirname "$0")"; pwd)
rm -rf ${path_script}/build
MY_DEFINITIONS="-DCMAKE_FIND_ROOT_PATH:PATH=${path_script}/../openssl/unix;${path_script}/../zlib/unix"
MY_DEFINITIONS="${MY_DEFINITIONS} -DCMAKE_INSTALL_PREFIX=${path_script}/unix"
MY_DEFINITIONS="${MY_DEFINITIONS} -DWITHOUT_SERVER=ON"
MY_DEFINITIONS="${MY_DEFINITIONS} -DWITH_UNIT_TESTS=OFF"
MY_DEFINITIONS="${MY_DEFINITIONS} -DCMAKE_BUILD_TYPE=Release"
mkdir ${path_script}/build && cd ${path_script}/build && echo ${MY_DEFINITIONS}|xargs cmake ../mysql-5.6.51 && make clean && make && make install

if [[ -d ${path_script}/unix/lib64 ]]; then
   rm -rf ${path_script}/unix/lib
   mv ${path_script}/unix/lib64 ${path_script}/unix/lib
fi

7. qsqlmysql

需要到ssl加密,在编译前要先编译ssl库以及mysql库

 在Release QMYSQL driver 5.12.12 · thecodemonkey86/qt_mysql_driver下载源码

 在win编译:前两个是vs和qt的路径,vs路径要根据自己的安装位置做更改,创建文本添加下列脚本,修改成.bat文件运行。ssl和mysql的共享库要在当前目录的上一级目录下的openssl的winx文件夹内

call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
call "%QT_HOME%\msvc2017_64\bin\qtenv2.bat"

set path_script=%~dp0

rd /s/q "%path_script%\winx"
cd /D %path_script%

rd /s/q "%path_script%\build"
md "%path_script%\build"
cd /D "%path_script%\build"
cmake  -G "Visual Studio 15 2017" -A x64 -T host=x64 -DCMAKE_DEBUG_POSTFIX="d" -DMYSQL_ROOT_DIR="%path_script%/../mysql/winx" -DOPENSSL_ROOT_DIR="%path_script%/../openssl/winx" -DCMAKE_INSTALL_PREFIX=%path_script%/winx  ../qsqlmysql-5.12.12
cmake --build . --config Debug && cmake --build . --config Debug --target install


rd /s/q "%path_script%\build"
md "%path_script%\build"
cd /D "%path_script%\build"
cmake  -G "Visual Studio 15 2017" -A x64 -T host=x64 -DMYSQL_ROOT_DIR="%path_script%/../mysql/winx" -DOPENSSL_ROOT_DIR="%path_script%/../openssl/winx" -DCMAKE_INSTALL_PREFIX=%path_script%/winx  ../qsqlmysql-5.12.12
cmake --build . --config Release && cmake --build ./ --config Release --target install

   在linux编译:修改成.sh文件。

#!/bin/bash
path_current=`pwd`
path_script=$(cd "$(dirname "$0")"; pwd)

export QT_TOOLCHAIN="${QT_HOME}/gcc_64"
export PATH="${QT_TOOLCHAIN}:${PATH}"
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH


export PATH=$PATH:$path_script
export PATH=${QT_TOOLCHAIN}/bin:$PATH
export PATH=$path_script/tools:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${QT_TOOLCHAIN}/lib

rm -rf ${path_script}/build
rm -rf ${path_script}/unix

MY_DEFINITIONS="-DMYSQL_ROOT_DIR:PATH=${path_script}/../mysql/unix"
MY_DEFINITIONS="${MY_DEFINITIONS} -DOPENSSL_ROOT_DIR:PATH=${path_script}/../openssl/unix"
MY_DEFINITIONS="${MY_DEFINITIONS} -DCMAKE_INSTALL_PREFIX=${path_script}/unix"
MY_DEFINITIONS="${MY_DEFINITIONS} -DCMAKE_BUILD_TYPE=Release"
#MY_DEFINITIONS="${MY_DEFINITIONS} -DCMAKE_BUILD_TYPE=Debug"
mkdir ${path_script}/build && cd ${path_script}/build && echo ${MY_DEFINITIONS}|xargs cmake ../qsqlmysql-5.12.12 && make clean && make && make install

if [[ -d ${path_script}/unix/lib64 ]]; then
   mv ${path_script}/unix/lib64 ${path_script}/unix/lib
fi

8.ffmpeg

win的直接下载地址:Releases · GyanD/codexffmpeg

essentials是简洁版、full是完整版、shared是有共享库的,开发要链接直接选择 shared。

 也可以直接自己编译: 源码地址:Release n7.1 · FFmpeg/FFmpeg 

 win10版本:开发要链接直接选择 shared,获得bin、include、lib文件夹

linux版本:解压编译下列编译脚本,和源码同一目录下:FFmpeg-n4.3.8是需要替换的,你的源码文件是什么名字就替换成什么,生成的文件会在同一路径的unix文件夹下:

setlocal

set "path_current=%cd%"
set "path_script=%path_current%\FFmpeg-n4.3.8"
set "install_prefix=%path_current%\winx"

rd /s /q "%install_prefix%"
mkdir "%install_prefix%"

call "%QT_HOME%\msvc2022_64\bin\qtenv2.bat" || exit /b 1

cd /d "%path_script%" || exit /b 1
configure --toolchain=msvc --prefix="%install_prefix%" --enable-shared || exit /b 1
nmake || exit /b 1
nmake install || exit /b 1

endlocal

9.open62541

下载源码地址:

下载源码地址:Releases · open62541/open62541

在win编译:第一行是指定vs的路径,vs路径要根据自己的安装位置做更改,创建文本添加下列脚本,修改成.bat文件运行。-G "Visual Studio 15 2017" -A x64这是指定编译器,因为如果编译这个给库的编译器和项目的编译器不是同一个可能会导致链接问题。

call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64

set "path_current=%cd%"
set "path_script=%path_current%\open62541-1.4.8"
set "build_dir=%path_current%\build"
set "install_prefix=%path_current%\winx"

:: 清理旧的构建和安装目录
rd /s /q "%build_dir%" 2>nul
rd /s /q "%install_prefix%" 2>nul

:: 创建新的构建目录
md "%build_dir%"
cd /D "%build_dir%"

cmake -G "Visual Studio 15 2017" -A x64 ^
      -DCMAKE_INSTALL_PREFIX="%install_prefix%" ^
      -DCMAKE_BUILD_TYPE=Release ^
      -DUA_ARCHITECTURE=WIN32 ^
      -DUA_ENABLE_PUBSUB=ON ^
      -DUA_ENABLE_MULTICAST=ON ^
      -DCMAKE_C_FLAGS="/DWIN32" ^
      "%path_script%"

cmake --build . --config Release

:: 安装到指定目录
cmake --install . --prefix "%install_prefix%"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值