下面将记录为windows下构建SA的流水记录:
总结出来有以下操作:
- 1、拉取项目
- 2、运行
src/SARibbonBar/updateSARibbon.sh
拉取SARibbonBar - 3、运行3rdParty.pro
- 4、运行sa.pro
完成
fftw和gsl的dll文件位于各自目录下的7z压缩文件,这些将用在编译完成后的bin-xx目录下:
-
./src/3rdParty/gsl 下的
gsl.dll.7z
-
./src/3rdParty/fftw 下的
fftw32/libfftw3-3.dll.7z
或fftw64/libfftw3-3.dll.7z
打开gitbash
,cd
到一个英文路径下,注意路径别有中文,敲入下面的脚本拉取SA
git clone https://github.com/czyt1988/sa.git
等待SA
的拉取
目前第三方库的构建已经自动集成到sa3rdParty.pro
,运行sa3rdParty.pro
即可构建,想了解详情可细看下面小点介绍
- 1.下载
FFTW
库
我已经把必要文件放置在src/3rdParty/fftw
,此步骤可忽略
打开网址FFTW For Windows
: http://www.fftw.org/install/windows.html
下载对应的版本
虽然是用MinGW编译的,但是经测试vs2003到vs2015都可以正常使用,所以为了免去不必要麻烦,建议直接使用它们已经编译好的dll,这里我们后续需要用到libfftw3-3.dll
,lib
文件和头文件已经在./src/3rdParty/fftw
中配置好,理论不需要重新配置,若想重新配置fftw
的lib
请参考文档:doc/buildFFTW.md
- 2.下载GSL库
我已经把必要文件放置在src/3rdParty/gsl
,此步骤可忽略
GSL For Window
人家也像我一样很贴心的把所有东西都打包好了,包括dll和lib文件,你都不用费劲自己编译,下载地址见:GSL for windows
SA
把gsl相关文件放置在./src/3rdParty/gsl,包括头文件,lib文件,dll文件。
dll文件具体见百度网盘-gsl文件 提取码:k5e5
- 3.QWT库的构建
为了省事,SA
把QWT
的源码都放置在src/3rdParty/qwt/中
要编译qwt
只需要用Qt Creator
运行src\3rdParty\qwt\qwt.pro
,点build,等待10分钟即可,若不做特殊处理,将会在目录src\3rdParty
上生成一个build-qwt-xx文件夹:
编译完后会自动在lib文件夹下建立对应版本的目录,如下图(msvc,Qt5.9为例)
编译的dll文件(release模式下qwt.dll,debug模式下qwtd.dll)将要放置到sa的bin_xx_debug/release
目录下,这个目录需要先编译sa.pro才能生成
至此目前SA
所需的第三方库准备完成,需要有如下内容:
- fftw:
根据系统位数会加载下面的一个
src/3rdParty/fftw/fftw32/libfftw3-3.lib
src/3rdParty/fftw/fftw64/libfftw3-3.lib
- gsl:
src/3rdParty/gsl/lib/libgsl.lib
src/3rdParty/gsl/lib/libgslcblas.lib
- qwt 会根据编译环境而不同(qwt编译的lib路径不要改变,编译sa.pro时会自动寻找)
src/3rdParty/qwt/lib/{msvc/mingw32}/$${QT_MAJOR_VERSION}$${QT_MINOR_VERSION}$${QT_PATCH_VERSION}/libqwt.a
src/3rdParty/qwt/lib/{msvc/mingw32}/$${QT_MAJOR_VERSION}$${QT_MINOR_VERSION}$${QT_PATCH_VERSION}/libqwtd.a
在完成上述步骤后,通过gitbash或其他,进入SA
目录:src/SARibbonBar/
,运行updateSARibbon.sh
./updateSARibbon.sh
此脚本会自动把SARibbon
拉取下来,这是SA
界面的Ribbon控件库。
windows下,直接进入目录双击脚本也可以,如果没有安装gitbash,可以在https://github.com/czyt1988/SARibbon下载并把SARibbon
文件夹放在src/SARibbonBar
文件夹下,保证SARibbon.pro
的位置在src/SARibbonBar/SARibbon.pro
不需要编译SARibbon
库,因为sa.pro
会自动编译此库。
若想单独编译构建SARibbon
只需用Qt Creator打开SARibbon.pro
并构建,若不更改配置,将会生成src\SARibbonBar\SARibbon\bin_qtx.x.x_{debug/release}\
路径,其中包含一个示例程序和SARibbonBar.lib
和SARibbonBar.dll
生成的SARibbonBar.lib
文件位置请不要更改,SA
项目将引用此路径。自此SARibbonBar
构建完成。
使用Qt Creator
打开src/sa.pro
,点构建,保证以下库存在则可顺利完成SA
的构建:
-
qwt
库 ,根据编译环境不同和Qt版本不同会有不同路径,如Qt5.9.0下msvc编译将产生:src/3rdParty/qwt/lib/msvc/5_9_0/qwt.lib
-
fftw
库,位于src/3rdParty/fftw/fftw32/libfftw3-3.lib
,头文件位于src/3rdParty/fftw/fftw32/fftw.h
,64位位于fftw64文件夹下
-
gsl
库,位于src/3rdParty/gsl/lib/libgsl.lib
和src/3rdParty/gsl/lib/libgslcblas.lib
,头文件位于src/3rdParty/gsl/include/gsl/*.h
-
SARibbonBar
库的源码,SARibbonBar
可以不需要提前编译,但必须保证源码SARibbon目录位于src/SARibbonBar
文件夹下,若已经编译,不要改变编译生成的bin_qtx.x.x_{debug/release}文件夹名称
此时sa
的结构目录为:
确认上述文件配置完成,自己通过Qt Creator
构建sa.pro
构建完成后会有程序运行异常提示,同时生成src/bin_qtx.x.x_{debug/release}
文件夹
程序运行异常是因为缺少必要的dll,此时src/bin_qtx.x.x_{debug/release}
文件夹如下图所示:
需要把必要的dll拷贝到此目录下:
需要拷贝的dll如下:
-
- [可选]
src/bin_qtx.x.x_{debug/release}/lib
文件夹下的dll拷贝到src/bin_qtx.x.x_{debug/release}
目录下,Qt Creator+MinGW 并不需要此步骤,但Qt Creator+MSVC在一些版本里需要此步骤
- [可选]
-
- 之前构建
qwt
对应的dll拷贝到src/bin_qtx.x.x_{debug/release}
目录下,debug模式为qwtd.dll
,release模式下为qwt.dll
- 之前构建
-
FFTW
库的dll,此版本SA
使用的是libfftw3-3.dll
需要拷贝到src/bin_qtx.x.x_{debug/release}
下(注意FFTW
有double版本,float版本,long double版本,每个版本对应不同的dll,目前SA
只用了double版本也就是libfftw3-3.dll
)
-
GSL
库的dll,libgsl.dll
和libgslcblas.dll
需要拷贝到src/bin_qtx.x.x_{debug/release}
下
再运行Qt Creator
的build
即可看到程序运行
此时目录下文件应该如下图所示(Debug模式)
软件运行起来的截图
TODO