一、vs配置属性表
1.选择新建或已有项目,右键解决方案,添加新建项目
2.点击视图-->其他窗口-->属性管理器
3.右键解决方案-->添加新项目属性表
4.更改属性表名称和目录(与项目路径一致),添加
可以看到每个配置和平台都添加了一个属性表文件
5.根据项目需求选择平台和配置,配置对应的项目属性表,这里演示release x64,双击release x64下的项目属性表,出现配置窗口
6.配置pcl和opencv为例,现在演示一劳永逸的项目属性表方法,分别配置VC++目录-->包含目录;VC++目录-->库目录;C/C++-->预处理器;C/C++-->所有选项-->SDL检查;链接器-->输入。同时这里配置有两种方式,1是正常输入目录,2是使用相对路径进行项目打包,这里先演示1
VC++目录-->包含目录:
YOUR PATH\PCL 1.12.1\3rdParty\OpenNI2\Include C:\Program Files\PCL 1.11.1\3rdParty\VTK\include\vtk-9.1
YOUR PATH\PCL 1.12.1\3rdParty\Qhull\include
YOUR PATH\PCL 1.12.1\3rdParty\FLANN\include
YOUR PATH\PCL 1.12.1\3rdParty\Eigen\eigen3
YOUR PATH\PCL 1.12.1\3rdParty\Boost\include\boost-1_78
YOUR PATH\PCL 1.12.1\include\pcl-1.12
YOUR PATH\opencv\build\include
YOUR PATH\opencv\build\include\opencv2
VC++目录-->库目录
YOUR PATH\PCL 1.12.1\3rdParty\OpenNI2\Lib
YOUR PATH\PCL 1.12.1\3rdParty\VTK\lib
YOUR PATH\PCL 1.12.1\3rdParty\Qhull\lib
YOUR PATH\PCL 1.12.1\3rdParty\FLANN\lib
YOUR PATH\PCL 1.12.1\3rdParty\Boost\lib
YOUR PATH\PCL 1.12.1\lib
YOUR PATH\opencv\build\x64\vc15\lib
C/C++-->预处理器
_CRT_SECURE_NO_DEPRECATE
C/C++-->所有选项-->SDL检查
否(/sdl-)
链接器-->输入
release:
pcl_common.lib
pcl_features.lib
pcl_filters.lib
pcl_io.lib
pcl_io_ply.lib
pcl_kdtree.lib
pcl_keypoints.lib
pcl_ml.lib
pcl_octree.lib
pcl_outofcore.lib
pcl_people.lib
pcl_recognition.lib
pcl_registration.lib
pcl_sample_consensus.lib
pcl_search.lib
pcl_segmentation.lib
pcl_stereo.lib
pcl_surface.lib
pcl_tracking.lib
pcl_visualization.lib
libboost_atomic-vc142-mt-x64-1_78.lib
libboost_bzip2-vc142-mt-x64-1_78.lib
libboost_chrono-vc142-mt-x64-1_78.lib
libboost_container-vc142-mt-x64-1_78.lib
libboost_context-vc142-mt-x64-1_78.lib
libboost_contract-vc142-mt-x64-1_78.lib
libboost_coroutine-vc142-mt-x64-1_78.lib
libboost_date_time-vc142-mt-x64-1_78.lib
libboost_exception-vc142-mt-x64-1_78.lib
libboost_filesystem-vc142-mt-x64-1_78.lib
libboost_graph-vc142-mt-x64-1_78.lib
libboost_graph_parallel-vc142-mt-x64-1_78.lib
libboost_iostreams-vc142-mt-x64-1_78.lib
libboost_json-vc142-mt-x64-1_78.lib
libboost_locale-vc142-mt-x64-1_78.lib
libboost_log-vc142-mt-x64-1_78.lib
libboost_log_setup-vc142-mt-x64-1_78.lib
libboost_math_c99-vc142-mt-x64-1_78.lib
libboost_math_c99f-vc142-mt-x64-1_78.lib
libboost_math_c99l-vc142-mt-x64-1_78.lib
libboost_math_tr1-vc142-mt-x64-1_78.lib
libboost_math_tr1f-vc142-mt-x64-1_78.lib
libboost_math_tr1l-vc142-mt-x64-1_78.lib
libboost_mpi-vc142-mt-x64-1_78.lib
libboost_nowide-vc142-mt-x64-1_78.lib
libboost_numpy38-vc142-mt-x64-1_78.lib
libboost_prg_exec_monitor-vc142-mt-x64-1_78.lib
libboost_program_options-vc142-mt-x64-1_78.lib
libboost_python38-vc142-mt-x64-1_78.lib
libboost_random-vc142-mt-x64-1_78.lib
libboost_regex-vc142-mt-x64-1_78.lib
libboost_serialization-vc142-mt-x64-1_78.lib
libboost_system-vc142-mt-x64-1_78.lib
libboost_test_exec_monitor-vc142-mt-x64-1_78.lib
libboost_thread-vc142-mt-x64-1_78.lib
libboost_timer-vc142-mt-x64-1_78.lib
libboost_type_erasure-vc142-mt-x64-1_78.lib
libboost_unit_test_framework-vc142-mt-x64-1_78.lib
libboost_wave-vc142-mt-x64-1_78.lib
libboost_wserialization-vc142-mt-x64-1_78.lib
libboost_zlib-vc142-mt-x64-1_78.lib
flann.lib
flann_cpp.lib
flann_cpp_s.lib
flann_s.lib
OpenNI2.lib
qhullcpp.lib
qhullstatic.lib
qhullstatic_r.lib
qhull_r.lib
vtkcgns-9.1.lib
vtkChartsCore-9.1.lib
vtkCommonColor-9.1.lib
vtkCommonComputationalGeometry-9.1.lib
vtkCommonCore-9.1.lib
vtkCommonDataModel-9.1.lib
vtkCommonExecutionModel-9.1.lib
vtkCommonMath-9.1.lib
vtkCommonMisc-9.1.lib
vtkCommonSystem-9.1.lib
vtkCommonTransforms-9.1.lib
vtkDICOMParser-9.1.lib
vtkDomainsChemistry-9.1.lib
vtkDomainsChemistryOpenGL2-9.1.lib
vtkdoubleconversion-9.1.lib
vtkexodusII-9.1.lib
vtkexpat-9.1.lib
vtkFiltersAMR-9.1.lib
vtkFiltersCore-9.1.lib
vtkFiltersExtraction-9.1.lib
vtkFiltersFlowPaths-9.1.lib
vtkFiltersGeneral-9.1.lib
vtkFiltersGeneric-9.1.lib
vtkFiltersGeometry-9.1.lib
vtkFiltersHybrid-9.1.lib
vtkFiltersHyperTree-9.1.lib
vtkFiltersImaging-9.1.lib
vtkFiltersModeling-9.1.lib
vtkFiltersParallel-9.1.lib
vtkFiltersParallelImaging-9.1.lib
vtkFiltersPoints-9.1.lib
vtkFiltersProgrammable-9.1.lib
vtkFiltersSelection-9.1.lib
vtkFiltersSMP-9.1.lib
vtkFiltersSources-9.1.lib
vtkFiltersStatistics-9.1.lib
vtkFiltersTexture-9.1.lib
vtkFiltersTopology-9.1.lib
vtkFiltersVerdict-9.1.lib
vtkfmt-9.1.lib
vtkfreetype-9.1.lib
vtkGeovisCore-9.1.lib
vtkgl2ps-9.1.lib
vtkglew-9.1.lib
vtkhdf5-9.1.lib
vtkhdf5_hl-9.1.lib
vtkImagingColor-9.1.lib
vtkImagingCore-9.1.lib
vtkImagingFourier-9.1.lib
vtkImagingGeneral-9.1.lib
vtkImagingHybrid-9.1.lib
vtkImagingMath-9.1.lib
vtkImagingMorphological-9.1.lib
vtkImagingSources-9.1.lib
vtkImagingStatistics-9.1.lib
vtkImagingStencil-9.1.lib
vtkInfovisCore-9.1.lib
vtkInfovisLayout-9.1.lib
vtkInteractionImage-9.1.lib
vtkInteractionStyle-9.1.lib
vtkInteractionWidgets-9.1.lib
vtkIOAMR-9.1.lib
vtkIOAsynchronous-9.1.lib
vtkIOCGNSReader-9.1.lib
vtkIOChemistry-9.1.lib
vtkIOCityGML-9.1.lib
vtkIOCONVERGECFD-9.1.lib
vtkIOCore-9.1.lib
vtkIOEnSight-9.1.lib
vtkIOExodus-9.1.lib
vtkIOExport-9.1.lib
vtkIOExportGL2PS-9.1.lib
vtkIOExportPDF-9.1.lib
vtkIOGeometry-9.1.lib
vtkIOHDF-9.1.lib
vtkIOImage-9.1.lib
vtkIOImport-9.1.lib
vtkIOInfovis-9.1.lib
vtkIOIOSS-9.1.lib
vtkIOLegacy-9.1.lib
vtkIOLSDyna-9.1.lib
vtkIOMINC-9.1.lib
vtkIOMotionFX-9.1.lib
vtkIOMovie-9.1.lib
vtkIONetCDF-9.1.lib
vtkIOOggTheora-9.1.lib
vtkIOParallel-9.1.lib
vtkIOParallelXML-9.1.lib
vtkIOPLY-9.1.lib
vtkIOSegY-9.1.lib
vtkIOSQL-9.1.lib
vtkioss-9.1.lib
vtkIOTecplotTable-9.1.lib
vtkIOVeraOut-9.1.lib
vtkIOVideo-9.1.lib
vtkIOXML-9.1.lib
vtkIOXMLParser-9.1.lib
vtkjpeg-9.1.lib
vtkjsoncpp-9.1.lib
vtkkissfft-9.1.lib
vtklibharu-9.1.lib
vtklibproj-9.1.lib
vtklibxml2-9.1.lib
vtkloguru-9.1.lib
vtklz4-9.1.lib
vtklzma-9.1.lib
vtkmetaio-9.1.lib
vtknetcdf-9.1.lib
vtkogg-9.1.lib
vtkParallelCore-9.1.lib
vtkParallelDIY-9.1.lib
vtkpng-9.1.lib
vtkpugixml-9.1.lib
vtkRenderingAnnotation-9.1.lib
vtkRenderingContext2D-9.1.lib
vtkRenderingContextOpenGL2-9.1.lib
vtkRenderingCore-9.1.lib
vtkRenderingFreeType-9.1.lib
vtkRenderingGL2PSOpenGL2-9.1.lib
vtkRenderingImage-9.1.lib
vtkRenderingLabel-9.1.lib
vtkRenderingLOD-9.1.lib
vtkRenderingOpenGL2-9.1.lib
vtkRenderingSceneGraph-9.1.lib
vtkRenderingUI-9.1.lib
vtkRenderingVolume-9.1.lib
vtkRenderingVolumeOpenGL2-9.1.lib
vtkRenderingVtkJS-9.1.lib
vtksqlite-9.1.lib
vtksys-9.1.lib
vtkTestingRendering-9.1.lib
vtktheora-9.1.lib
vtktiff-9.1.lib
vtkverdict-9.1.lib
vtkViewsContext2D-9.1.lib
vtkViewsCore-9.1.lib
vtkViewsInfovis-9.1.lib
vtkWrappingTools-9.1.lib
vtkzlib-9.1.lib
opencv_world460.lib
7.配置完成后,点击确定,后一定要再右键属性表,点击保存
8.这样即可配置完成,这样可以很方便的配置不同的平台,同时保存的属性表也可以引入其他项目,保存的属性表文件在项目根目录下面,与cpp源文件同级,这样就可以将此属性表添加在新的项目里,新的项目无需再配置路径(对应pcl和opencv路径不能更改)
9.将刚才保存的属性表引入新项目,新建或打开需要的项目,点击视图-->其他窗口-->属性管理器
10.选择对应的平台,选择添加现有属性表,浏览,找到刚才的保存路径(或将属性表复制到一个路径)
11.可以看到刚刚配置好的路径已经被引入了(记得右键属性表保存),这种方式适合新项目的引入,只需配置一次,后续即可快捷使用,一劳永逸
二、相对路径项目打包(在无cv与pcl环境的设备上可直接运行)
1.刚刚介绍了第1种方式--项目属性表的输入目录,下面介绍第2种,配置相对路径,同样还是打开属性配置页,配置VC++目录-->包含目录;VC++目录-->库目录;C/C++-->预处理器;C/C++-->所有选项-->SDL检查;链接器-->输入。
2.将pcl和opencv安装位置里的动态链接库和静态库及头文件库放入根目录(cpp源文件或h头文件所在的目录)下,这里新建library
里面新建cv和pcl(用以区分)
到opencv安装目录里复制粘贴引入include、bin、和lib文件夹到根目录下刚刚新建的library里面的cv目录
cv:
到pcl安装目录里复制粘贴引入3rdparty、bin、lib文件夹到根目录下刚刚新建的library里面的pcl目录
pcl:
3.接着配置包含目录和库目录路径,需要使用相对路径表示如下:(具体根据自己的命名和路径 ./表示当前目录即根目录)
4.继续配置剩余C/C++-->预处理器;C/C++-->所有选项-->SDL检查;链接器-->输入。这此配置请参考一里面的步骤6,完成后保存属性表,这样即把相对路径的库包含进了项目中,适合在其他设备移植使用,只需要在其他设备复制粘贴即可开发使用,且设备无需配置pcl与opencv环境,(但要有vs)