Mac使用CMake编译stasm
Mac使用CMake编译stasm
环境
macos 12.5.1
stasm 4.1.0
http://www.milbo.users.sonic.net/stasm/
步骤
一、 有个好心人编写了在Unix上用cmake构建的stasm的库。我们可以使用它辅助我们对stam进行编译。
- clone它: https://github.com/juan-cardelino/stasm
git clone https://github.com/juan-cardelino/stasm.git
我将用STASM_DIR代表这个repo的根目录。
- 下载stam源码:http://www.milbo.users.sonic.net/stasm/
将文件解压到STASM_DIR目录中进行文件覆盖。 - 在STASM_DIR目录下执行下面的命令。
cd STASM_DIR/apps
patch -p0 < appmisc.cpp.20140201.diff
cd STASM_DIR/apps/shapefile
patch -p0 < shapefile.cpp.20140201.diff
- 在STASM_DIR目录下创建一个build目录,进行编译。
- 正常情况下,你会编译不过。因为它依赖opencv库。实际安装了opencv3之后,我也发现一些函数调用已经不匹配了。可能stam源码依赖的是更早的某个版本的opencv。
二、安装opencv3
brew install opencv3
可能会遇到一些问题,不过一般可以通过搜索解决。
三、重新编译 stam
- 配置opencv
正常还是会编译不过。因为brew安装的opencv3. 默认cmake脚本中的find_package会寻找不到。
可以通过查看brew装的opencv3在哪个目录,我们手动指定下。
我的是装在了这个目录:/usr/local/opt/opencv@3。那么可以将CmakeList.txt中的find_package(OpenCV REQUIRED) 替换为 find_package(OpenCV REQUIRED CONFIG PATHS /usr/local/opt/opencv@3/share/OpenCV)
就可以寻找到了。
-
解决函数找不到的问题。
有很多符号找不到的问题,大多数是因为没有导入头文件。我是直接根据IDE提示,进行了导入。
还有一些问题是,可以通过在函数前面增减cv::,然后根据IDE提示,导入头文件。
最终编译成功。