2014-09-26 更新:
1. 前言
突然发现相当一部分时间似乎都花在编译系统,程序上,解决起问题越来越得心应手,不过不知道花这么多时间值不值得。。。
2. CMake
昨天晚上到今凌晨3点,加今天一上午,又折腾了一通。
CMake靠find_package(ModuleName) 来定位每个module的头文件和库。每个FindOpenCV,FindBoost,或者OpenCVConfig.cmake,Boost-config.cmake都是私人订制,如果花足够的时间,肯定能精通所有的细节。但是。。。。
3. Boost
官网上还没有正式的CMake流程。就导致针对Boost的FindBoost.cmake更不标准了
3.1 Mac
Mac下因为必须用链接libc++的,而不是MacPorts中的GNU版本(libstdc++)所以必须指定
set(BOOST_ROOT "/Users/llz/Packages/boost_1_55_0/build-boost155/"),同时
set(Boost_NO_SYSTEM_PATHS ON)
set(Boost_NO_BOOST_CMAKE ON)
3.2 Windows
Windows下库文件名像libboost_filesystem-vc120-mt-1_56.lib,即使指定了正确的路径也找不着
手动指定set(Boost_LIBRARY_DIR "D:/dev-packs/boost_1_56_0/stage/lib")也没用,必须到Visual Studio里手动给出路径。。。也许是变量名没找对
4. OpenCV
一直都是槽点最多的
4.1 OpenCV 2.4.8到2.4.9又有很多接口变化
2.4.9多了什么videoio249.lib,shape249.lib,imgcodesc249.lib等;但同时少了contrib.lib
另外 <opencv2/video/background_segm.hpp>中的接口也变了
BackgroundSubtractorMOG没有了
BackgroundSubtractorMOG2好像改成了纯虚函数,不能在自己的类中这样定义了(不能实例化虚函数错误):
cv::BackgroundSubtractorMOG2 mog;
4.2 CMake
机器上编译了2.4.9,CMake总会找到。最后手动设置 OpenCV_INCLUDE_DIRS,OpenCV_LIBS 指向2.4.8的版本才通过