可以看出作者使用的是vs的cmake,但是使用vs的ide时,会出现
也就是说vs中的cmake无法正确识别generate_export_header()函数
因此本文采用CLion的cmake环境进行操作。
库下载
在github中,作者表示大概有12个库是需要安装的,然而成功编译只需要安装5个库分别是:Boost,openCV,Qt,openslide,PugiXML。
12个库中的libjpeg、libtiff、zlib均已经被openslide包含在内。
12个库中的JasPer、unittest++、SWIG、DCMTK目前仍没有使用到(至少在编译阶段还不需要)
1、boost的编译及安装。
参考于:https://www.cnblogs.com/noticeable/p/14847682.html
首先声明一点,也许是软件自身支持版本的原因,或者是CLion中cmake的版本原因,请不要下载boost 1.75以上版本。本文使用的是1.69版本。
下载好boost后,解压到稳定文件夹,执行:
bootstrap gcc
//在此之前,需要自己把gcc的系统变量配置好。
然后执行
.\b2 toolset=gcc
这个时候得到stage\lib下的.a文件。按照参考帖子,指示我们要进行重命名-x64的文件。本文发现不用重命名也行(至少在我的电脑上是这样)
此时在ASAP的根目录下找到CMakeLists.txt
找到
find_package(Boost QUIET REQUIRED COMPONENTS date_time filesystem program_options regex system thread)
在这行代码的上一行写上:
#set(BOOST_ROOT 你自己boost解压的路径的根目录)
#set(BOOST_INCLUDE_DIR ${BOOST_ROOT})
#set(BOOST_LIBRARY_DIR boost解压的路径\stage\lib)
#include_directories(${BOOST_INCLUDE_DIR})
#link_directories(${BOOST_LIBRARY_DIR})
2、PugiXML的环境配置
解压下载的包,得到
如图的目录结构,我们发现其中有CMakeLists.txt,也就是说我们可以使用CLion进行编译,进入CLion打开该CMakeLists.txt
点击编译,选择运行项为其中的一个.cpp文件,运行,发现无法运行,结束。
之后我们得到如下的文件结构:
因此回到ASAP的根目录下找到CMakeLists.txt,找到
find_package(PugiXML REQUIRED)
在上一行写入:
set(PugiXML_DIR pugiXML的解压目录/cmake-build-debug)
之后打开ASAP内的文件夹:Annotation内的CMakeLists.txt
找到
get_target_property(PUGIXML_INCLUDE_DIR pugixml INTERFACE_INCLUDE_DIRECTORIES)
在上一行写入
set(PUGIXML_INCLUDE_DIR pugiXML的解压路径/src)
将 get_target_property(``PUGIXML_INCLUDE_DIR pugixml INTERFACE_INCLUDE_DIRECTORIES``)
的PUGIXML_INCLUDE_DIR改为${PUGIXML_INCLUDE_DIR}
之后打开ASAP内的文件夹:multiresolutionimageinterface内的CMakeLists.txt
同样找到
get_target_property(PUGIXML_INCLUDE_DIR pugixml INTERFACE_INCLUDE_DIRECTORIES)
上一行写上:
set(PUGIXML_INCLUDE_DIR pugiXML解压路径/src)
将 get_target_property(``PUGIXML_INCLUDE_DIR pugixml INTERFACE_INCLUDE_DIRECTORIES``)
的PUGIXML_INCLUDE_DIR改为${PUGIXML_INCLUDE_DIR}
接下来看到
这里有红色的报错,注意,这里是警告并不是报错,原因我猜测是因为作者把PugiXML直接整合到项目中了,因此会有一个target名为pugixml,但是我们把pugixml作为库引入,因此即使不存在这个target也没有问题。
3、openslide的安装
去到openslide的官网,我们下载的是
这个,其他的都不对,因为只有这里面有lib目录和include目录。
解压,不需要做其他操作。
找到
find_package(OPENSLIDE REQUIRED)
上面一行写入
set(OPENSLIDE_LIBRARY openslide的解压目录/lib/libopenslide.lib)
//这句中要注意.lib,否则会报错,找不到__imp_openslide之类的函数。
set(OPENSLIDE_INCLUDE_DIR openslide的解压目录/openslide/include/openslide)
4、qt、以及openCV
比较简单,不多赘述,可以肯定的是,这两个也需要安装,但是似乎不需要写在CMakeLists.txt中,这部分有点忘记了。
5、目前的问题
仍找不到程序入口,需要找到程序入口。否则报以下错误。