Win7-64bits-VS2012 安装 32bit CGAL4.7,记录如下:
准备工作
版本选择:VS2012只有32bit版的安装包;
QT5.5.0 在 windows VS2012 下只有 32bit 安装包。这里由于 CGAL 需要展示 demo,就将所有依赖项都选择对应的 32bit。
需要说明的是调用的库的位数需要与程序位数保持一致:
- Use 32bit shared library from 64bit application?
- Linking 32-bit library to 64-bit program
相关组件版本如下:
- CGAL 4.7
- Visual Studio 2012 Professional
- Boost 1.58.0
- CMake 3.2.3
- QT 5.5.0 download confusion
- QT Visual Studio addin 1.2.2
另外一个需要注意的是:
- VS2012 与 QT VS addin 1.2.4 兼容性并不好,一打开就会提示插件启动失败,因此选择1.2.2版本的QT插件。
- CGAL 在安装过程中需要联网,并且Boost编译时需要较大的空间(
≈
3G),需要注意留出相应磁盘空间。
安装
VS2012的安装就不再赘述,总体安装流程如下。
Boost
通过编译源码来生成相关 lib:
- 打开命令行 cmd
- 运行:
c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat
配置当前(cmd)适用于生成 x86,x64 或 arm 平台代码的环境。 如果未提供任何参数,vcvarsall.bat 将配置环境变量以面向 x86 平台,具体说明参见这里。 - 也可以直接在快捷菜单栏上找到:
win->Microsoft Visual Studio 2012->Visual Studio Tools->xxx Native Tools Command Prompt
直接进入到配置好了的 cmd 环境。 - 将下载的boost压缩文件解压缩并跳转到解压缩目录下。
- 运行:
.\booststrap
- 设置安装路径,stage 路径,指定生成静态\共享,单\多线程链接库文件:
.\b2 stage toolset=msvc-11.0 --stagedir=<YOUR STAGE DIR> --build-dir=<YOUR BUILD DIR> address-model=32 link=static,shared threading=single,multi variant=debug,release
多个编译器或多个版本编译器通过 toolset 来指定,具体参数意义可以.\b2 --help
查阅,在这篇博文里也有很好的解释。 - 在目录
<YOUR STAGE DIR>
中的就是编译的库文件 .lib, .dll。
CMake
安装包安装,需要注意的是勾选“Add CMake to system PATH for all users“。如果提示PATH为空或者检查PATH变量发现没有CMake目录,就需要手动添加目录到系统变量PATH中。
QT
安装包安装。同样的,如果没有就需要手动添加环境变量 QTDIR: C:\Qt\Qt5.5.0 和 PATH 中添加 C:\Qt\Qt5.5.0\bin。
QT addin
安装包安装。
CGAL
安装包安装,需要注意的是:
- CGAL 需要联网下载组件 GMP 和 MPFR。
- 保持默认:with GMP and MPFR, with examples and demos。
- 选择32-bits platform for precompiled libraries。
- 选择为所有用户添加环境变量,并且勾选 CGAL_DIR 和 添加 CGAL/auxiliary/gmp/lib to the PATH。
- 检查环境变量,如果上述变量不存在就需要手工添加。现在下一步就是需要编译CGAL
- 打开CMake软件。
- 对源文件和生成可执行文件目录都选择CGAL安装目录(C:/Program Files/CGAL-4.7)。
- 点击Configure。
- 选择generator:找到本机32位 project file generator:Visual Studio 11 2012。如果选择win64,CMake生成的工程配置文件中会在命令行选项中添加 /machine:X64 导致模块计算机类型“x64”与目标计算机类型“X86”冲突”问题。
- 点击Generate
- 在安装目录里就生成了一个名为 CGAL 的解决方案,其中包含各个子工程。
- 对ALL_BUILD工程在debug和release模式下生成。
- 在安装目录的 lib 文件夹中就可以看到生成的库文件。
- 添加相应的系统环境变量 CGAL_DIR,path 中添加库文件目录。
运行
- 打开CMake
- 源代码和目标目录都选择一个demo文件夹,例如C:\Program Files\CGAL-4.7/demo/Triangulation_2。
- Configure, generate。
- 打开生成的解决方案 .sln 文件并编译。
其他说明
- ALL_BUILD project :
In the Visual Studio solution, the ALL_BUILD project is the default “Startup project”. You can change it by right-clicking the appropriate project in the Solution Explorer and choosing “Set as startup project”.
来自这里。
在CGAL.sln中的目标文件是库文件因此不需要更改启动项目(startup project),Triangulation_2.sln是需要生成可执行的QT界面因此需要更改启动项目,以此避免按F5进行运行调试整个solution的时候就会提示启动项目Debug\ALL_BUILD无法启动的错误。 - 如果不需要运行CGAL的demo,就不需要qt的支持,编译运行example里的控台程序也可以。其实demo就是通过qt进行前端可视化展示。CGAL4.7 之前的版本的demo是不支持QT5及以上版本的,因此选择4.7就必须选择Qt5以上版本。对应的4.7以下版本就需要QT5以下版本。
- 几个相关的小工具:Dependency Walker 2.2,DLL动态库检测工具 32位64位检测工具,How to find if a native DLL file is compiled as x64 or x86?。
DUMPBIN.EXE 需要注意的是:
You can start this tool only from the Visual Studio command prompt. You cannot start it from a system command prompt or from File Explorer.
上面说的问题实际上就是在运行DUMPBIN之前需要设置好搜索目录,如果直接WIN+R CMD进入VC\BIN目录运行DUMPBIN就会提示“丢失mspdb110.dll”。
而如果从VS编译器界面工具栏的tools->visual studio command prompt进入就没有这个错误,因为所谓的visual studio command prompt其实就是已经设定好搜索目录的cmd,在工具栏tools->外部工具,选择“visual studio 命令”提示就可以看到:
/K "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat"
就是在cmd之前运行了vcvars.bat改变了当前环境变量。
我们也可以从“win->所有程序->Microsoft Visual Studio 2012->Visual Studio Tools->兼容工具/本机工具/开发人员命令提示“中运行DUMPBIN,这些命令行工具其实都是cmd快捷方式,只是运行之前他们的设置参数都不一样,在这些命令提示工具上右键属性->快捷方式->目标栏中就可以看到他们的参数区别。
以上备忘。
参考:
Download CGAL for Windows
Installing CGAL and related programs on Windows operating system
Boost Simplified Build From Source