boost和CGAL安装过程查阅资料整理

CGAL编译与配置

2016年04月09日 16:55:32

阅读数:4326

从来没有自己编译过第三方库,每次看到cmake上那些红色的错误就头疼,从来都是伸手党,不过这次没有要到编译好的CGAL,只能硬着头皮自己来。当编译完看到自己的例子跑通,才发现并没有想象中的复杂。

(此方法在win7和win10的64位电脑上都成功了)

(我安装的boost和CGAL都是32位的)

1. 使用CGAL必须要用的是Boost,CGAL,另外需要使用CMake来配置CGAL

2. 关于下载哪个版本的问题,直接将我的安装包截图吧:

   下载地址:
BOOST下载
CGAL下载
CMake下载
CGAL安装包:http://download.csdn.net/detail/u013094443/9485951 (这个是我自己上传的CGAL,上面列的是官网上的,都可以下载)
有文章中提到CGAL的例子只能使用Qt来运行,由于我的电脑上已经装了qt,所以这步直接跳过了,但有两点想说明:

(1).有文章提到不能使用qt5,所以就安装4.X版本的吧,我装的qt4.8.7;

(2).最终使用CGAL的工程用C++的控制台应用程序就好,没建qt工程也能跑起来

(下面的安装路径不要包含中文路径,养成习惯)

3.编译boost

(1)打开命令行窗口(win+R);

(2)输入cmd.exe,回车;

(3)将boost根目录下面的booststrap.bat文件直接拖到cmd.exe打开的界面并回车,运行结束后会产生b2.exe和bjam.exe,这里b2.exe是bjam.exe的新版本;(有的下载的是一个打包好的boost.exe,那么运行这个exe,在其安装目录下可以找到booststrap.bat文件;有的下载下来不是exe,那么解压下载的boost应该就能直接看到booststrap.bat文件)

(4)运行b2.exe;

(5)编译完成。

//****************************************************************************

昨天有人告诉我,这样编译boost会将boost依赖的十几个库全部编译,浪费时间和存储空间,实际上CGAL只需要用到其中的两个库:system和thread,所以下面这个截图说明了怎么只编译这两个库:

//*****************************************************************************

4.编译CGAL

(1)如果下载的是已经打包的CGAL.exe,运行这个exe,另外一种可能是下载的不是exe,那么直接解压就行了。两种方式得到的应该都是这样的文件:

(2)安装cmake,运行cmake-gui,进行设置:


其中"where is the source code"输入的就是(1)下载的文件的根目录,即(1)中图片文件所在根目录

       “Where to build the binaries”,自己新建一个一个文件夹,命个名就行,我的名字叫做CGAL4.7output。

(3).第二部设置好两个“Where。。。”之后先别动,在用户环境变量中添加环境变量设置:

BOOST_ROOT 或者BOOST_INCLUDEDIR:D:\ProgramFiles\boost_1_59_0  (包含bootstrap.bat的文件夹,比如我的是:D:\ProgramFiles\boost_1_59_0)

BOOST_LIBRARYDIR:D:\ProgramFiles\boost_1_59_0\lib32-msvc-10.0(有的说是这个路径:D:\ProgramFiles\boost_1_59_0\stage\lib ,不过我用这个路径已知报错,建议使用我的那个路径先试试,不行再换,不过添加环境变量之后,最好将计算机重启一下再进行下面的工作)

(4)在cmake-gui界面点击左下角:Configure;

(5)在第四步无错误的情况下,将下图的两个选项勾选上(这样可以得到CGAL的例子),然后点击Generate,完成后在你选择的输出路径下有一个CGAL.sln;

(6) 打开CGAL.sln,在Debug和Release模式下都运行一遍,会提示无法生成什么的,不用担心,只要下面那里显示的是成功5,失败0就好。


5.运行CGAL4.7output/example中的例子之前,我们还要将在系统环境变量的path中添加:

D:\ProgramFiles\boost_1_59_0\stage\lib;(这个我估计不用加)

D:\ProgramFiles\boost_1_59_0\lib32-msvc-10.0;

D:\ProgramFiles\CGAL4.7output\bin;

D:\ProgramFiles\CGAL-4.7\auxiliary\gmp\lib

6.打开D:\ProgramFiles\CGAL4.7output\examples下的任意例子,如Min_circle_2,应该就能跑起来了

7.当让这是运行编译生成的例子,如果我们需要自己建一个使用CGAL的工程,建立工程之后是需要配置的:


在项目名称上点击右键-》属性-》VC++目录:

(1)包含目录加入:
CGAL安装路径\include;CGAL安装路径\auxiliary\gmp\include;Boost安装路径;CGAL编译输出路径\include

(2)库目录加入:
CGAL输出目录\lib;CGAL安装路径\auxiliary\gmp\lib;Boost安装路径\stage\lib

(3)src:
CGAL安装路径\src

然后把官网上这个直线和线段求交的例子拷进去看看:

#include <CGAL/Exact_predicates_exact_constructions_kernel.h>

#include <CGAL/intersections.h>

typedef CGAL::Exact_predicates_exact_constructions_kernel K;

typedef K::Point_2 Point_2;

typedef K::Segment_2 Segment_2;

typedef K::Line_2 Line_2;

typedef K::Intersect_2 Intersect_2;

int main()

{

  Segment_2 seg(Point_2(0,0), Point_2(2,2));

  Line_2 lin(1,-1,0);

  CGAL::cpp11::result_of<Intersect_2(Segment_2, Line_2)>::type

    result = intersection(seg, lin);

  if (result) {

    if (const Segment_2* s = boost::get<Segment_2>(&*result)) {

      std::cout << *s << std::endl;

    } else {

      const Point_2* p = boost::get<Point_2 >(&*result);

      std::cout << *p << std::endl;

    }

  }

  return 0;

}

 

参考资料:

(1)CGAL在win7+VS2010的安装:http://blog.sina.com.cn/s/blog_6f3306c40101ajbj.html

(2)Win8.1 x64 + VS2013 下CGAL安装及配置:http://www.ithao123.cn/content-8025858.html

CGAL在VS2013中的安装关键问题的解决

2015年12月09日 20:54:44

阅读数:2639

前言

最近需要用到CGAL的三角剖分功能,而且以后做研究也会需要用到,所以打算花点时间安装CGAL。然而过程充满了曲折,主要还是在编译安装上折腾比较久。后来安装成功了回过头来,才发现原来CGAL官网给的安装步骤才是最好的,比在网上搜的要更及时,而且句句箴言!

如果英文还过得去,强烈推荐按照官方的步骤进行安装。当然,这样还是会遇到点小问题,我在以下会有所提及。

CGAL官方指南:http://www.cgal.org/download/windows.html

安装CGAL前的准备

  1. cmake: 必须安装,用于生成项目文件
  2. boost:必须安装。
  3. Qt:如果想要运行CGAL附带的demo,就需要安装,在此我们也一并介绍。
  4. LibQGLViewer:如果要运行demo里面的3D部分,就需要安装。

安装 cmake

下载最新的cmake,然后一路next安装到底,还是很省心的。

安装完成后,确认(cmake安装目录)\bin 已经加入PATH,不在里面的话就自己添加好啦。

安装 boost

虽然boost是个头文件库,直接加入默认include文件中就能运行大部分的功能,但既然要装,说不准哪天就要用到了,所以还是一口气装全吧。boost如果是下载源码进行编译,则会遇到相当大的困难,我在下载源码尝试很久之后最终放弃。

在CGAL官方安装说明中推荐下载预编译好的boost进行安装。所以如果不是对自己特别自信,请去下载预编译版本吧。官网这样告诉我们

I download and run the file boost_1_59_0-msvc-xx.0-32.exe (where xx = 10 for MSVC 2010, 11 for 2012, 12 for 2013)
I choose to extract the files to a new directory c:\dev\libboost_1_59_0

我的电脑是装的VS2013,所以就选择boost_1_59_0-msvc-12.0-32.exe。之所以不装64位的是因为可能会因为各种支持问题出现莫名其妙的错误(笔者没有试过,但的确从前安装matplotlib的时候才发现其中一个依赖项不支持64位,所以很折腾)

  1. 有关安装位置的选择:安装位置不一定在C盘,只需要保证之后加到环境变量中的 BOOT_ROOT(非必须),BOOT_LIBRARYDIR, BOOT_INCLUDEDIR 指向正确即可。比如笔者就安装在了D:\boost_1_59_0\

  2. 环境变量的设置:设置两个环境变量,因为Cmake在生成CGAL项目的时候需要找到boost并连接,需要用到这两个环境变量

    BOOST_LIBRARYDIR=(boost安装位置)\lib32-msvc-xx.0
    BOOST_INCLUDEDIR=(boost安装位置)

  3. 将 “(boost安装位置)\lib32-msvc-xx.0” 加入到 PATH 中去

至此boost安装完成,可以尝试运行test一下。注意将 BOOT_INCLUDEDIR,BOOT_LIBRARYDIR 分别加入到VS项目属性中的包含目录和库目录中去。

安装Qt

Qt突然看上去要像是收费的样子,很怕怕。不过没关系,Qt提供了LGPL协议的开源版本,在其官网下往下拉即可看到。注意下载的时候下载offline的下载版,不然你会因为online版本不显示下载进度而疯掉的。

一路next,注意,安装位置同样可以不选择C盘,只要环境变量 QTDIR 和 PATH 指向正确即可。

  1. 环境变量的设置

    QTDIR=D:\Qt\Qt5.5.1 (即Qt安装位置)

  2. 将 “D:\Qt\Qt5.5.1\5.5\msvcXXXX_XX\bin” 加入到 PATH 中去

LibQGLViewer

一定要下载source(http://www.libqglviewer.com) 解压后放到如:

C:\dev\libQGLViewer-2.6.3

Start the x86 Visual Studio Command Prompt 就是在VS目录中bin下面的vcvars32.bat,在命令行下运行一下。回到LibQGLViewer的安装目录,cmd下运行。不先运行的话,会出现rc 不是命令balabala

qmake.exe
nmake

如果出现 cl 不是命令balabala 就需要添加 “(VS 安装目录)\VC\bin”到path里面。

  1. 环境变量的设置

    QGLVIEWERROOT=C:\dev\libQGLViewer-2.6.3 (即LibQGLViewer安装位置)

  2. 将 “C:\dev\libQGLViewer-2.6.3\QGLViewer\release;C:\dev\libQGLViewer-2.6.3\QGLViewer\debug” 加入到 PATH 中去

安装并编译CGAL

下载

同样注意下载installer而不是源码进行编译!下载 CGAL-4.7-Setup.exe 并安装。比如安装到了C:\dev\CGAL-4.7(实际上会安装到C:\Program Files\CGAL-4.7)

注意最后会提醒要将 (CGAL-4.7安装目录)\auxiliary\gmp\lib 加入到PATH中去

cmake 生成

用管理员身份打开Cmake,否则无法对C盘进行操作。

I set C:\dev\CGAL-4.7 for source and C:\dev\CGAL-4.7\build as binaries
Click on Configure
Choose “Visual Studio xx xxxx” for the 32-bit version and “Visual Studio xx xxxx Win64” for the 64-bit version
Click on Generate

注意,这里Cmake有可能会报错,因为它找不到boost。不要管它的提示什么BOOST_INCLUDE_DIR 没有设好,你确定自己的环境变量没有错而又使用的是最新的boost,那么很有可能是Cmake没有及时更新,没有识别出你的版本。进入Cmake的安装目录,找到 ...\share\cmake-3.3\Modules\FindBoost.cmake,在以下代码中添加自己的boost的版本号。然后就能顺利Generate。

# The user has not requested an exact version.  Among known
  # versions, find those that are acceptable to the user request.
  set(_Boost_KNOWN_VERSIONS ${Boost_ADDITIONAL_VERSIONS}
    "1.59.0" "1.58.0" "1.58" "1.57.0" "1.57" "1.56.0" "1.56" "1.55.0" "1.55" "1.54.0" "1.54"
    "1.53.0" "1.53" "1.52.0" "1.52" "1.51.0" "1.51"
    "1.50.0" "1.50" "1.49.0" "1.49" "1.48.0" "1.48" "1.47.0" "1.47" "1.46.1"
    "1.46.0" "1.46" "1.45.0" "1.45" "1.44.0" "1.44" "1.43.0" "1.43" "1.42.0" "1.42"
    "1.41.0" "1.41" "1.40.0" "1.40" "1.39.0" "1.39" "1.38.0" "1.38" "1.37.0" "1.37"
    "1.36.1" "1.36.0" "1.36" "1.35.1" "1.35.0" "1.35" "1.34.1" "1.34.0"
    "1.34" "1.33.1" "1.33.0" "1.33")
  set(_boost_TEST_VERSIONS)

编译安装

generate成功后进入build目录,点开CGAL.sln,用Debug和Release模式各生成一遍ALL_BUILD即可。建议再单独生成以下带Install字样的项目,因为貌似它会自动给Cmake添加 FindCGAL.cmake。还会在C:\Program Files (x86)\ 下生成一个 CGAL 文件,方便引用。

在编译完成后,在\build\include\CGLA目录下会出现一个compiler_config.h 的文件,复制出来放在\include下。否则会在编译自己的项目时找不到。

最后,将 (CGAL-4.7安装目录)\build\bin 加入到PATH中去

使用CGAL

在使用CGAL的时候,需要设置 属性->配置属性->VC++目录:

可执行目录:

$(QTDIR)\5.5\msvc2013\bin
$(CGAL_DIR)\auxiliary\gmp\lib
$(CGAL_DIR)\bin(or \build\bin)

include目录中包含:

$(BOOST_INCLUDEDIR)
$(CGAL_DIR)\include
$(CGAL_DIR)\auxiliary\gmp\include

lib目录中包含:

$(QTDIR)\5.5\msvc2013\lib
$(BOOST_LIBRARYDIR)
$(CGAL_DIR)\lib
$(CGAL_DIR)\auxiliary\gmp\lib

属性->配置属性->链接器->输入中附加依赖项:

libgmp-10.lib
libmpfr-4.lib

忽略项:

gmp-vc100-mt-gd.lib
mpfr-vc100-mt-gd.lib

即便如此,最后还是会出现“找不到 CGAL-vc120-mt-gd-4.7.dll”,没关系,从$(CGAL_DIR)\build\bin中找出来,扔到你的项目目录下即可。

再次提醒一些容易忘记的细节

加入PATH的目录

(cmake安装目录)\bin
(boost安装位置)\lib32-msvc-xx.0
(Qt安装目录)\5.5\msvcXXXX_XX\bin
(libQGLViewer安装目录)\QGLViewer\release
(libQGLViewer安装目录)\QGLViewer\debug
(CGAL-4.7安装目录)\auxiliary\gmp\lib
(CGAL-4.7安装目录)\build\bin

环境变量

BOOST_LIBRARYDIR=(boost安装位置)\lib32-msvc-xx.0
BOOST_INCLUDEDIR=(boost安装位置)
QTDIR=D:\Qt\Qt5.5.1 (即Qt安装位置)
QGLVIEWERROOT=C:\dev\libQGLViewer-2.6.3 (即LibQGLViewer安装位置)

参考与致谢

  1. http://jingyan.baidu.com/article/1709ad80b673f34634c4f0ac.html google 搜出来的排第一的结果,然而其实boost的安装可以更简便,我就是卡在这里好久都绕不过去,最后看来官方教程才搞定boost的安装。

  2. http://blog.csdn.net/babywong/article/details/40983039 这篇主要是帮我解决了使用CGAL时候的各种链接错误等等的编译问题,是写得很正确的一篇。但是最后有关CGAL-vc90-mt-gd-4.5.dll missing 问题的解决并不是很到位,虽然也是对的。

CGAL计算几何库配置步骤

2015年12月04日 10:09:51

阅读数:4070

1、前置要求

本文配置的环境用于开发32位程序,所以对于的库安装文件都选择32位(x86)版本。如果想要开发64位程序,选择对于的64位(x64)版本安装程序即可。

  1. 安装cmake :下载稳定版非RC版。
  2. 如果需要运行CGAL demos,则需要安装QT4,如果需要运行3D CGAL demos,则需要安装libQGLViewer。否则,跳过QT4和libQGLViewer的安装步骤即可。

2、Qt4和libQGLViewer

  1. 下载安装Qt4.8.6,安装路径为C:\local\Qt\4.8.6
    添加环境变量QTDIR为C:\local\Qt\4.8.6
  2. 把bin目录C:\Qt\4.8.6\bin添加到path系统环境变量中
  3. 为避免和其他同名的dll冲突,将bin目录放在path系统环境变量的最开头
  4. libQGLViewer的安装过程可以查看这篇笔记:http://fromwiz.com/share/s/1z0C8O3buQW-249RoZ3zmhnx2-NgKH1DS4BD2k7pbm25RIQQ

3、Boost

  1. Boost可以在SourceForge上下载,可以根据需要选择32位或64位,也可以选择对应VisualStudio的哪个版本。此处选择32位且对应于VisualStudio2013(内部版本号12.0)的版本:boost_1_58_0-msvc-12.0-32.exe
  2. 选择默认安装路径C:\local\boost_1_58_0,新建环境变量保存头文件和库文件的目录
 BOOST_LIBRARYDIR=C:\local\libboost_1_58_0\lib32-msvc-12.0  
 BOOST_INCLUDEDIR=C:\local\libboost_1_58_0
  1. 把dll路径C:\local\libboost_1_58_0\lib32-msvc-12.0添加到path系统环境变量中
  2. 有些版本库文件的目录可能是lib32而不是lib32-msvc-12.0这样的

4、CGAL

  1. 下载并安装CGAL,本文安装CGAL4.6版本,安装路径为C:\local\CGAL-4.6
  2. 使用CMake编译CGAL
    打开CMake-GUI,选择where is the source code路径为C:\local\CGAL-4.6,选择where to build the binary路径为C:\local\CGAL-4.6\build
  3. 单击Configure,选择“Visual Studio 12 2013”,对应于32位版本和Visual Studio 2013,多次configure直到没有红色错误出现。最后单击Generete生成工程文件
  4. C:\local\CGAL-4.6\build下使用Visual Studio2013打开工程文件,并同时ALL_BUILD全部编译Debug和Release版本
  5. 把编译生成的bin目录添加到系统环境变量path中:C:\local\CGAL-4.6\build\bin

5、测试demo

  1. 打开CMake-GUI,选择”where is the source code” 为C:\local\CGAL-4.6\demo\Triangulation_2,选择”where to build the binaries”为C:\local\CGAL-4.6\build-demo\Triangulation_2   此时可能需要选择CGAL的路径:直接选编译好的CGAL文件夹C:\dev\CGAL-4.11.2\build_cmake
  2. 多次点击Configure直到没有红色错误,然后单击Generate生成工程文件。
  3. C:\local\CGAL-4.6\build-demo\Triangulation_2路径下找到并打开工程文件,编译运行demo程序,效果如下:
    Triangulation_2 demo运行效果

CGAL配置的一点心得(各种错误的解决办法)

2017年07月03日 15:54:40

阅读数:733

这几天由于项目关系,花了些时间配置了一下CGAL,说实话走了不少弯路,谈谈我的心得吧,具体流程我不想讲,这种东西网上博客一搜一大把,而且都有一定的参考价值,当然最值得推荐的还是官网http://www.cgal.org/download/windows.html,如果不太想看英文可以看下这篇文章http://blog.csdn.net/milkpku/article/details/50241361我主要是想讲一下配置时遇到的报错该怎么解决。
1、Cmake编译CGAL报错(1):Boost_DIR或Boost_INCLUDE_DIR找不到,只需在CMake里修改Boost_INCLUDE_DIR路径,如下图所示:
只需要将路径修改为你的boost的安装目录就可以了这里写图片描述
2、Cmake编译CGAL报错(2)找不到boost库,如果有很多库都找不到那可能是你的Cmake版本太低了,可以试着换一个Cmake版本,如果只是一两个库找不到,如找不到boost_system库和boost_thread库,可以在你的boost安装目录下看看有没有相应的库,如果有则只需要添加其路径就可以了,如下图所示,(PS:网上有说将libboost_system-vc120-mt-gd-1_55.lib中的前缀lib删掉也可以找到,虽然有很多人试了可以成功找到,但后续如果编译boost库时还会出错,或者说这只是没有办法的办法,这些库文件的命名一般都有一定意义,所以一般不建议修改文件名)。如果没有那可能是你boost库编译不成功,boost库的安装可以选择形如boost_1_55_0-msvc-12.0-32.exe类型的文件进行安装,这种安装方法非常简便,俗称无脑式安装。
这里写图片描述
3、VS2013编译出错提示:Cmake编译成功后,会生成一个CGAL.sln的解决方案文件。在VS环境下打开这个文件,在debug,win32的条件下按F7进行编译,如果F7没有被设置成快捷键,可能是因为vs里默认的快捷键不是原来vc6的,这时候需要自己通过工具菜单里的那个选项把快捷键设置为vc6的快捷键配置就可以了。也可以右键解决方案,然后点击批生成,不好意思,废话有点多,回归正题,编译时出现如下情况:无法打开文件“libboost_system-vc120-mt-sgd-1_55.lib的解决办法,这是编译boost生成的静态库,首先先检查你的boost库里面有没有这个文件,如果有,就把所在的库的目录添加到添加到库目录里面,如还是显示找不到,则把这个库文件的最直接路径添加到库目录当中就可以解决了,当然你还要配置其运行库集配置类型也要相对应(与后面动态库配置类似)如图所示:
这里写图片描述
那如果没有应该怎么办呢,是不是一定是boost库编译不成功的原因?不一定,如果你的库里面libboost_system-vc120-mt-gd-1_55.lib,那说明你可能只是将其编译成动态库了,boost有两种编译方式,一种是编译静态库,一种是编译成动态库,静态库的命名上只比动态库多了一个s,虽然只有一字之差,但实际文件的调用时差异却很大,这里不再赘述,总之不要妄想用重命名的方式将静态库改成动态库,反之亦然。如果将其编译成动态库该怎么解决呢,(1)你可以试着再编译boost生成静态库(2)你也可以改用动态库,如改用动态库,首先还是像上述一样,添加路径,再将运行库改为多线程(DLL),如下图所示:
这里写图片描述
这里写图片描述
配置类型改为动态库(.DLL),如图所示
这里写图片描述
水平有限,可能有些地方说的不对,希望大家批评指正。

Boost库的源码编译以及使用

2018年01月30日 09:40:10

阅读数:79

(一)Boost库源码的编译

参考Getting Started手册(点击打开链接)

(1) ./bootstrap.sh

(2) ./b2

(3) sudo ./b2 install

大功告成.编译生成的库文件安装到了/usr/local/libs目录下; 头文件安装到了/usr/local/include/boost目录下.

(二)Boost头文件引用及编译

(1)一个简单的头文件,实现的功能是3秒钟之后打印文本信息:


#include <iostream>

#include <boost/asio/io_context.hpp>

#include <boost/asio/deadline_timer.hpp>

#include <boost/asio/basic_socket.hpp>

#include <boost/asio/placeholders.hpp>

void Print(boost::system::error_code ec){

    std::cout << "Hello World!" << std::endl;

}

int main(){

    boost::asio::io_context ioc;

    boost::asio::deadline_timer t(ioc, boost::posix_time::seconds(3));

    t.async_wait(&Print);

    ioc.run();

    return 0;

}
 

(2)编译方法

g++ $1 -std=c++11 -lboost_system -lpthread -I/usr/local/include/boost -L/usr/local/lib -o $2

BOOST安装或编译

2016年11月23日 15:53:23

阅读数:3399

Boost库是为C++语言标准库提供扩展的一些C++程序库的总称。

Boost库由Boost社区组织开发、维护。其目的是为C++程序员提供免费、同行审查的、可移植的程序库。Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能。

Boost库使用Boost License来授权使用。

大部分boost库功能的使用只需包括相应头文件即可,少数(如正则表达式库,文件系统库等)需要链接库。里面有许多具有工业强度的库,如graph库。

  • 已编译Boost安装

https://sourceforge.net/projects/boost/files/boost-binaries

根据VS版本和操作系统位数下载合适的版本安装

Name Modified Size Downloads / Week Status
Parent folder
SHA256SUMS.asc 2016-09-27 2.4 kB 3 i
SHA256SUMS 2016-09-27 1.5 kB 4 i
DEPENDENCY_VERSIONS.txt 2016-09-27 397 Bytes 86 i
boost_1_62_0-msvc-9.0-64.exe 2016-09-27 260.5 MB 175 i
boost_1_62_0-msvc-9.0-32.exe 2016-09-27 233.1 MB 106 i
boost_1_62_0-msvc-8.0-64.exe 2016-09-27 258.6 MB 12 i
boost_1_62_0-msvc-8.0-32.exe 2016-09-27 229.5 MB 13 i
boost_1_62_0-msvc-14.0-64.exe 2016-09-27 277.0 MB 1,303 i
boost_1_62_0-msvc-14.0-32.exe 2016-09-27 255.4 MB 626 i
boost_1_62_0-msvc-12.0-32.exe 2016-09-27 244.8 MB 301 i
boost_1_62_0-msvc-12.0-64.exe 2016-09-27 267.3 MB 447 i
boost_1_62_0-msvc-11.0-64.exe 2016-09-27 273.0 MB 77 i
boost_1_62_0-msvc-10.0-64.exe 2016-09-27 257.4 MB 117 i
boost_1_62_0-msvc-11.0-32.exe 2016-09-27 250.1 MB 28 i
boost_1_62_0-msvc-10.0-32.exe 2016-09-27 235.1 MB 68 i
boost_1_62_0-bin-msvc-all-32-64.7z 2016-09-26 1.5 GB 161 i
boost_1_62_0-32bitlog.txt 2016-09-26 30.0 kB 22 i
boost_1_62_0-64bitlog.txt 2016-09-26 23.6 kB 16  
Totals: 18 Items   4.6 GB 3,565  

安装后设置系统变量BoostDir和BoostLibs

在VS工程中创建两个宏 $(BoostDir), $(BoostLibs),就可以不用使用绝对路径了。

  • BOOST源码编译

源码https://sourceforge.net/projects/boost/,下载后解压

从开始--Microsoft Visual Studio 2013找到 Visual Studio Tools:

打开文件夹,选择VS2013 x86 Native Tools Command

双击,打开命令窗口

切换到boost_1_62_0目录

首先需要运行bootstrap.bat来生成boost库的编译引擎:b2.exe,bjam.exe(很重要)。

运行C:\boost_1_62_0\bootstrap.bat

编译,可以简单的使用b2 install,也可以指定存放目录。

// 如果要获取动态库

bjam install stage --toolset=msvc-12.0 --stagedir="C:\boost_1_62_0\lib64-msvc-12.0" link=shared runtime-link=shared threading=multi debug release  

// 如果是要获取静态库:

bjam install stage --toolset=msvc-12.0 --stagedir="C:\boost_1_62_0\lib64-msvc-12.0" link=static runtime-link=static threading=multi debug release  

注意:

  1. 修改--toolset=msvc-12.0,将12.0修改成对应的vs版本号,12.0是VS2013的版本号。
  2. 目标地址也要修改成你所需的。
  3. 不要漏了install,它会帮你把头文件集合到一个文件夹中。      编译过程有一个复制过程,编译需要的时间比较长,本次编译过程中,会在C盘根目录下生成一个boost文件夹,然后包含include和lib文件夹,这就是我们将要使用的头文件和库文件。
  • 编译boost.Python库生成动态连接库

bjam stage address-model=64 architecture=x86--toolset=msvc-12.0 --with-python --stagedir="C:\boost_1_62_0\lib64-msvc-12.0" link=shared runtime-link=shared threading=multi debug release

出现:python error LNK2001

解决办法:设置Python路径和版本

set PYTHON_ROOT=c:\Python27set PYTHON_VERSION=2.7

成功

  • bjam程序的输入参数

(1)stage/install:

stage表示只生成库(dll和lib),install还会生成包含头文件的include目录。

(2)toolset:

指定编译器,可选的如borland、gcc、msvc(VC6)、msvc-9.0(VS2008)、msvc-12.0(VS2013)等。

(3)without/with:

选择不编译/编译哪些库。根据各人需要进行选择,默认是全部编译。

如果选择编译python的话,是需要python语言支持。

(4)stagedir/prefix:

stage时使用stagedir,install时使用prefix,表示编译生成文件的路径。

(5)build-dir:

编译生成的中间文件的路径。

(6)link:

生成动态链接库/静态链接库。生成动态链接库需使用shared方式,生成静态链接库需使用static方式。一般boost库可能都是以static方式编译,因为最终发布程序带着boost的dll感觉会比较累赘。

(7)runtime-link:

动态/静态链接C/C++运行时库。同样有shared和static两种方式,这样runtime-link和link一共可以产生4种组合方式。

(8)threading:

单/多线程编译。一般都写多线程程序,当然要指定multi方式了;如果需要编写单线程程序,那么还需要编译单线程库,可以使用single方式。

(9)debug/release:

编译debug/release版本。一般都是程序的debug版本对应库的debug版本,所以两个都编译。

PCL1.8.0使用cmakelist安装(1)

2017年11月23日 10:32:24

阅读数:341

1.问题

 
  1. Found OpenGL: opengl32

  2. CMake Error at C:/Program Files/PCL 1.8.0/cmake/PCLConfig.cmake:47 (message):

  3. simulation is required but glew was not found

  4. Call Stack (most recent call first):

  5. C:/Program Files/PCL 1.8.0/cmake/PCLConfig.cmake:679 (pcl_report_not_found)

  6. C:/Program Files/PCL 1.8.0/cmake/PCLConfig.cmake:842 (find_external_library)

  7. CMakeLists.txt:4 (find_package)

  8.  
 
[cpp] view plain copy
  1.   
 

2.原因

“ simulation is required but glew was not found ” 缺少glew framework,可在官网上下载The OpenGL Extension Wrangler Library进行解决。

3.解决方案

(1)下载The OpenGL Extension Wrangler Library。地址:http://glew.sourceforge.net/。可选择安装包形式或编译后文件。此处只是使用library和include,可以只使用编译后文件。若出现不兼容问题,可使用安装包进行重编译。

(2)对glew重新建立文件指向,目标文件目录为glew的安装目录:\glew-2.0.0\lib\Release\x64与\glew-2.0.0\include

(3)cmake中点击configure,错误消除

(4)cmake中generate生成工程,再进行调试。

CMake3.7.2 PCL1.8.0-AllInOne-msvc-xin64 VS2013 利用CMake生成包含PCL库的VS2013工程

2018年01月22日 19:50:49

阅读数:134

前言

由于博主经常用CMake生成VS工程,近期在用CMake生成包含PCL库的VS工程时遇到了许多奇怪的错误。故记录下来,一是用于日后警醒自己,二是分享给有需要的朋友们。

对于习惯用VS生成工程的读者,如果对在VS2013上配置PCL1.8.0感兴趣的话,可以参看博主的另一篇博文: PCL-1.8.0-AllInOne VS2013 Win8 X64 安装配置及部分问题解决方法。本篇文章主要关注于用CMake来生成工程。

环境

Win8 x64

Visual Studio 2013

CMake-3.7.2-win32

一.准备工作

首先需要下载PCL-1.8.0-AllInOne安装包文件和相应的pdb文件

  • PCL库安装一般有两种方式:一种是先下载PCL的各种第三方依赖库以及PCL的源代码,然后自行进行编译安装;另一种是领用AllInOne版本进行安装。本博文关注的是后一种安装方式。
  • 目前PCL官网提供的Windows AllInOne下载版本只有1.5.1和1.6.0,PCL工程页可以查找到PCL-1.8.1的源码和AllInOne安装包以及PCL-1.8.0的源码,但PCL-1.8.0的AllInOne以及其pcd文件链接失效或被墙了(读者后续可以持续关注,如果PCL工程页链接重新生效推荐下载那里的安装包)。


本博文使用的安装包是从一个参考博客给出的百度网盘中下载的,亲测有效。下载其中的PCL-1.8.0-win64的安装包以及相应的pdb文件,属性表可以不下载,建议自己建立(因为博主用链接里提供的属性表测试时没有成功,后面有介绍自己的属性表的建立方式)。

下载链接http://pan.baidu.com/s/1c1sqoQO 

此外,该百度云链接提供了PCL-1.8.0-win32的安装包以及相应的pdb文件。由于博主使用的是x64的,win32版本没有测试过,但原理应该是相通的。

 

二.安装

1.PCL库安装

双击安装包,安装的时候注意选上“Add PCL to the system PATH for all users”,这样安装程序会自动在系统环境变量中添加“PCL_ROOT”、“OPENNI2_INCLUDE64”、“OPENNI2_LIB64”、“OPENNI2_REDIST64”四个项。

注意:若安装结束后提示“路径过长无法添加环境变量”,这并不影响;如果安装结束后没有自动在系统环境变量中增加以上四项,则手动加上即可。)

图示皆以我的安装路径为例。

2.OpenNI安装

安装过程中会弹出OpenNI的安装程序,将OpenNI的安装路径设置为“PCL_ROOT”下3rdParty\OpenNI2文件夹,例:

C:\Program Files\PCL 1.8.0\3rdParty\OpenNI2

(这里可以选择安装在其他目录,不过会影响到项目配置)

3.pdb安装

安装程序执行完成后将pdb文件包解压(即PCL-1.8.0-AllInOne-msvc2013-win64-pdb.rar),pdb文件拷贝到“PCL_ROOT”下的bin文件夹中,例:

C:\Program Files\PCL 1.8.0\bin

三.环境变量

上面说过了安装程序会自动添加“PCL_ROOT”项到系统环境变量中,此外还要手动添加PCL、Qhull、FLANN、VTK、OpenNI2的bin目录以及%OPENNI2_REDIST64%到PATH中

例:

注意:如果安装程序没有自动添加“PCL_ROOT”则需要手动填上,因为CMake生成VS工程的时候,PCLConfig.cmake文件是通过“PCL_ROOT”来找PCL库的(如下图)。


四、CMake生成VS2013工程

 

1.建立CMakeLists.txt文件

建立如下所示的最简化版的CMakeLists.txt来生成包含PCL库的工程。

cmake_minimum_required(VERSION 2.8 FATAL_ERROR)

 

project(Demo)

 

include_directories(${PCL_INCLUDE_DIRS})

link_directoried(${PCL_LIBRARY_DIRS})

add_definitions(${PCL_DEFINITIONS})

 

add_executable(PCLTest main.cpp)

target_link(PCLTest ${PCL_LIBRARIES})

2.利用CMake进行Configure

工程生成平台选择为“Visual Studio 12 2013 Win64”

3.Qt5的下载与配置

Configure的过程中会进行报错:缺少Qt5。

原因分析:这是因为PCL1.8.0用到了Qt5库中的一些支持,由于博主原本的Qt版本是4.8.6不满足,所以报错。

解决方案:进行Qt5.x的下载并进行配置。

博主下载的是:Qt5.5.1-opensource-windows-x86-msvc2013_64.exe

下载链接http://download.qt.io/archive/qt/5.5/5.5.1/

配置:下载好后对该可执行文件进行一键安装即可,并将Qt5.5.1库的bin路径添加到系统环境变量的Path变量中。

例:

C:\Qt\Qt5.5.1\5.5\msvc2013_64\bin

下载Qt5并进行配置后,“缺少Qt5”的报错信息消失。


 

4.GLEW库的下载与配置

但在Configure过程中仍然会进行报错:“simulation is required but glew was not found”.


原因分析:因为PCL1.8.0库用到了GLEW(The OpenGL Extension Wrangler Library)库的一些支持,所以必须要有GLEW库才能进行正常Configure。

解决方案:下载GLEW库并尽心相关配置。

博主下载的是:GLEW官网有原码形式和二进制形式两种类型的包提供下载,原码形式需要自己下载并编译,博主直接下的GLEW-2.1.0的二进制形式。

下载链接http://glew.sourceforge.net/

配置:把GLEW下载下来后,可以把它放到%PCL_ROOT%\3rdParty的文件路径下,然后在系统环境变量中增加以下三个变量(这三个变量的确立是通过查看PCLConfig.cmake以及观察CMake Configure报错信息琢磨测试得出)。

  • GLEW_ROOT(对照着%PCL_Root%\cmake\PCLConfig.cmake文件中查找GLEW库时的变量名) -> 指向GLEW库的安装路径
  • GLEW_INCLUDE_DIR(对应着CMake中第一个篮框中的第二个变量名) -> 指向GLEW库的Include文件夹路径
  • GLEW_GLEW_LIBRARY(对应着CMake中第一个篮框中的第一个变量名) -> 指向GLEW库的glew32.lib文件所在的文件夹路径

以博主路径为例:

 
  1. GLEW_ROOT C:\Program Files\PCL 1.8.0\3rdParty\glew2.1.0

  2. GLEW_INCLUDE_DIR C:\Program Files\PCL 1.8.0\3rdParty\glew2.1.0\include

  3. GLEW_GLEW_LIBRARY C:\Program Files\PCL 1.8.0\3rdParty\glew2.1.0\lib\Release\x64

可以通过如下方式检验系统环境变量是否添加并更新成功:

“Win+R”启动“运行” -> 输入“cmd”启动Console -> 分别输入“echo %GLEW_ROOT%”,“echo %GLEW_INCLUDE_DIR%”和“echo %GLEW_GLEW_LIBRARY%” -> 检查是否返回路径并为正确路径。

进行GLEW库的下载与配置后,重新利用CMake进行Configure后显示正常,如下图所示。

其中,GLEW库的相关路径已经找到,Qt5、FLANN、OPENNI、OPENNI2、QHULL等库的相关路径都已找到。DAVIDSDK、DSSDK、ENSENSO、RSSDK四个库的相关路径还没有找到,PCL_POINT_CLOUD_EDITOR_INCLUDE_DIR也没有找到,但是并不影响,配置成功

接着在点击“Generate”即可生成VS2013工程文件

注意

1.这里有一个非常磨人的坑。即使我们添加了“GLEW_ROOT”、“GLEW_INCLUDE_DIR”、“GLEW_GLEW_LIBRARY”三个系统环境变量并给予了正确的路径值,并且利用控制台命令(如上述)检测了这些变量的存在与更新,但是在CMake Configure的时候还是显示没有找到相关路径。(博主装了两边PCL1.8.0,第一次安装的时候出现了CMake找不到GLEW_GLEW_LIBRARY的情况,重启了一遍电脑之后找到了;第二次安装的时候出现了CMake同时找不到GLEW_INCLUDE_DIR和GLEW_GLEW_LIBRARY的情况,重启了一遍电脑之后依然找不到GLEW_INCLUDE_DIR,又重启了一遍电脑终于找到了)

(当然,如果不觉得繁琐,可以每次CMake一个新的工程的时候,都手动在CMake中输入GLEW_INCLUDE_DIR和GLEW_GLEW_LIBRARY的路径值,这个方法一定可行。但对于博主这类强迫症可行不通......)

2.之前用CMake生成包含Matlab的VS工程文件的时候,也出现过类似的情况:系统环境变量设置好了(一般不重启电脑环境变量也已经更新好,难道这仅仅是一个副本?),CMake愣是找不到,只有重启一次或多次电脑后才能够找到。

五.项目环境目录配置。

打开由CMake生成的VS2013工程文件。切换到“解决方案资源管理器”视图 -> 对目标项目右键,选择“属性” -> 左侧“配置属性” -> 选择“调试” -> 选择“环境”,设置为:

PATH=$(PCL_ROOT)\bin;$(PCL_ROOT)\3rdParty\FLANN\bin;$(PCL_ROOT)\3rdParty\VTK\bin ;

$(PCL_ROOT)\Qhull\bin;$(PCL_ROOT)\3rdParty\OpenNI2\Tools;$(PATH) 

此处为了方便显示所以换行,实际中可以单行直接输入。

注意

  • 此步的“项目环境目录配置”是针对单个项目而言的,如果该工程中有多个项目,必须对每一个项目进行“项目环境目录配置”操作,否则未进行“项目环境目录配置”的项目运行时会出现如下所示的奇怪错误:“无可用信息,未为pcl_visualization_debug.dll加载任何符号”。(这类错误在使用pcl::visualization::PCLVisualizer类时非常常见,例如可以正常显示点云数据,但是不能正常显示点云的法矢数据并出现如下图所示的错误)。

  • CMake生成的VS2013工程中的项目不需要进行“新建项目属性表并设置”或“设置项目的包含目录、库目录和附加依赖项”的操作,因为CMake通过CMakeLists.txt文件自动给项目进行了包含目录、库目录和附加依赖项的设置。但是“项目环境目录配置”操作是必不可少的
  • 经过“项目环境目录配置”后生成的工程能够在VS2013里运行,但是直接点击运行文件夹里生成的exe文件时运行中会报错。(当程序中有用到pcl::Visualizer的时候)(直接运行release版本的exe文件比直接在VS2013里运行release版本工程速度快很多,用了才知道!)

注:

上述三点已经得到解决。

原因分析:

经逐一排查,本质原因是虽然已经在系统环境变量path中设置了PCL、FLANN、VTK、Qhull、OpenNI2的bin路径(为程序运行时提供相应的dll文件),但是程序运行时没有感应到(原因尚未知)。所以只能在VS中单独对项目进行“项目属性 -> 调试 -> 环境”设置,一旦脱离VS平台直接运行生成的exe程序就又失效了。(经逐一排查,对这一现象起决定性作用的关键路径是$(PCL_ROOT)\bin;)

解决方法:

  • <尝试1:成功> 

将“$(PCL_ROOT)\bin”中的所有文件拷贝到“C:\Windows\System32”文件夹中。(亲测有效,利用这方法,上述第二点的单独对项目进行进行“项目属性 -> 调试 -> 环境”设置可以省略,而且也不会出现上述第三点中的exe运行报错)

(为了保险起见,建议把

“$(PCL_ROOT)\bin;$(PCL_ROOT)\3rdParty\FLANN\bin;$(PCL_ROOT)\3rdParty\VTK\bin ;$(PCL_ROOT)\3rdParty\Qhull\bin;$(PCL_ROOT)\3rdParty\OpenNI2\Tools;”中的所有文件都拷贝到“C:\Windows\System32”中去)

该方法参考的博文:PCL1.7.2 VS2013 配置 (下图为核心信息截图截图)

  • <尝试2:失效> 

把“$(PCL_ROOT)\3rdParty\VTK\bin”中的dll文件拷贝到“$(PCL_ROOT)\bin;”文件夹下,因为PCL 1.8.0以下版本的PCL库可能在运行的时候“看不见”VTK的动态库。(博主试过这方法但是没有效果,而且发现问题关键在于$(PCL_ROOT)\bin;”而非其他路径。并且PCL 1.8.0以上的版本已经把VTK改成了静态链接方式。未深究,待考察。)
该观点参考的博文:PCL 1.7.2 All-in-one Installer MSVC2012 x64 (下图为博文中的核心信息截图)

[关于该问题解决后的反思]

  1. 不要仅仅拥“错误提示”去搜索答案(因为有些错误提示是一大串编号,原因可能很多),还要尝试用稍微本质一些的“关键词”去搜索答案。比如此处的问题出在“程序运行时dll文件的寻找”上。
  2. 参考了好多中文博文,终于拼拼凑凑地把PCL All-in-one 1.8.0版本还算功能较完整地整合好了。“最佳的参考答案永远是官网教程”,这是装PCL 1.8.0 All-In-One以及CGAL库得到的血与泪的教训啊!有时间后对照PCL官网教程把自己的PCL再“完满完满”!

完成上述操作之后,CMake生成的VS2013工程就能正常运行了!

程序运行成功示意图(点云法矢显示):

猜你喜欢

转载自blog.csdn.net/a_222850215/article/details/81074069