CMake和Boost和OpenCV以及Windows及Mac

2014-09-26 更新:

折腾了一天,would you believe that fstream (including ifstream, ofstream ) won't work WITHIN Xcode !!!
我用的的是 Xcode 4.5.1,ML 10.8.5.
完全一样的代码,拿出来单独编译运行就没有问题,不论是连libstdc++还是libc++都没有问题,就是在Xcode里就是不行!!!
ifstream does not work in Xcode?
Can't open text file resource in Xcode 4 c++ tool?
顺便,
C++文件操作详解(ifstream、ofstream、fstream)
ofstream和ifstream详细用法
Intro to File Input/Output in C

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

另外 中的接口也变了

BackgroundSubtractorMOG没有了

BackgroundSubtractorMOG2好像改成了纯虚函数,不能在自己的类中这样定义了(不能实例化虚函数错误):

cv::BackgroundSubtractorMOG2 mog;

4.2 CMake

机器上编译了2.4.9,CMake总会找到。最后手动设置 OpenCV_INCLUDE_DIRS,OpenCV_LIBS 指向2.4.8的版本才通过


你可能感兴趣的:(Windows备忘,Mac备忘,OpenCV备忘)