1.windows下查找依赖库
windows下程序打包使用Qt自带的工具windeployqt进行打包,使用该工具的前提设置Qt安装目录下的环境变量,具体设置哪个路径的环境变量,区别在于是对于本次编译使用的编译器是msvc或是mingw,例如本次使用的mingw_64位,则将安装目录下“D:\mingw64\bin”,设置到path的环境变量中。完成设置后调用:
windeployqt demo.exe
以上就是将自己应用程序依赖的Qt动态库以及一些资源文件打包到目录下。
2. windows下程序打包
将动态库和应用程序集成为一个可执行程序直接运行,这样可以隐藏动态库细节,该操作可以使用程序进行打包,应用程序为:enigmavb.exe。
3.innosetup制作程序安装包
需要加载一些程序额外的资源文件时,可以制作一个程序的安装包,里面设置注册表之类的信息,可使用工具,具体用法可以查找相关资料,不再赘述。
4.linux下查找依赖库
linux下查找依赖库脚本为:
desLibDir="myDir"
libList=$(ldd build/$bin | awk '{if (match($3,"/")){ printf("%s "),$3 } }')
cp $libList $desLibDir
5.编译Qt程序的CMakeLists.txt
注意一点:MinGW编译器x32不支持thread,需要下载x64_posix-seh版,本次下载版本:gcc8.1
x86_64-8.1.0-release-posix-seh-rt_v6-rev0。
在windows编译时需要额外传入命令行:cmake .. -G "MinGW Makefiles"
区分windows和linux需要传入命令行:-DCMAKE_SYSTEM_NAME=Linux或传Windows
if( CMAKE_SYSTEM_NAME MATCHES "Linux" )
message("on Linux...")
include_directories(
include
${CMAKE_INSTALL_PREFIX}
/usr/include/x86_64-linux-gnu/qt5
)
link_directories(
lib_linux
)
add_executable(demo
./src/main.cpp
${INCLUDE_FILE}
${SRC_FILE}
)
elseif( CMAKE_SYSTEM_NAME MATCHES "Windows" )
set( CMAKE_PREFIX_PATH "D:/Qt/Qt5.14.2/5.14.2/mingw73_64")
set( CMAKE_CXX_COMPILER "D:/mingw64/bin/g++.exe")
set( CMAKE_C_COMPILER "D:/mingw64/bin/gcc.exe")
message("on Windows...")
include_directories(
include
${CMAKE_INSTALL_PREFIX}
D:/Qt/Qt5.14.2/5.14.2/mingw73_64
)
link_directories(
lib_win
)
add_executable(demo WIN32
./src/main.cpp
${INCLUDE_FILE}
${SRC_FILE}
)
else()
message("another system: ${CMAKE_SYSTEM_NAME}")
endif()