1、使用anaconda创建虚拟环境:
name: test
channels:
- conda-forge
- bioconda
- defaults
- saedrna
dependencies:
- cmake
- qt
- opencv
- boost=1.72
- libtiff
- jasper
- swig
- pugixml
- zlib
- openjpeg
- openimageio
然后执行命令:
conda env create -n asap(虚拟环境名) -f env.yml(上面的环境名称)
然后想要进入asap则需要
https://blog.csdn.net/kdongyi/article/details/81905494
退出base环境,还有更改启动时自动base环境。(在windows下的powershell设置)
https://www.cnblogs.com/brady-wang/p/12771441.html
然后activate asap就进去了
2、建立一个build.bat
内容如下:
mkdir build
cd build
cmake -G "Visual Studio 16 2019" -A X64 -T host=x64 ^
-DCMAKE_TOOLCHAIN_FILE=%CONDA_PREFIX%\h2o.cmake ^
-DCMAKE_BUILD_TYPE=RelWithDebInfo ^
-DCMAKE_INSTALL_PREFIX=./install ^
-DBUILD_EXECUTABLES=ON ^
-DBUILD_ASAP=ON ^
-DBUILD_IMAGEPROCESSING=ON ^
-DPACKAGE_ON_INSTALL=ON ^
../
CD ..
mkdir 建立一个文件夹,叫build
cd 去到build文件夹下
cmake -G “Visual Studio 16 2019” -A X64 -T host=x64 ^ 执行cmake,在这之前需要环境变量配置
-DCMAKE_TOOLCHAIN_FILE=%CONDA_PREFIX%\h2o.cmake ^ 找到工具链,h2o.cmake
-DCMAKE_BUILD_TYPE=RelWithDebInfo ^ 设置编译类型
-DCMAKE_INSTALL_PREFIX=./install ^ 设置安装路径(指编译成功后生成exe文件的路径)
-DBUILD_EXECUTABLES=ON ^ 查看cmakelists可以知道,BUILD_EXECUTABLES被设置成了OFF,只能在这个地方进行打开。如果在cmakelists下将OFF改为ON,则不起作用。
-DBUILD_ASAP=ON ^ 打开BUILD_ASAP的开关
-DBUILD_IMAGEPROCESSING=ON ^ 打开BUILD_IMAGEPROCESSING的开关
-DPACKAGE_ON_INSTALL=ON ^ 打开PACKAGE_ON_INSTALL的开关
../
CD .. 返回上一级
3、在根目录下的cmakelists添加set语句
set(OPENSLIDE_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/openslide/include/openslide.lib)
set(OPENSLIDE_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/openslide/lib/libopenslide.lib)
set(DCMTKJPEG_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/dcmtk)
set(PUGIXML_HOME ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/pugixml/cmake-build-debug)
set(UNITTEST_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/unittest/include)
set(UNITTEST_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/unittest/lib/UnitTest++_d.lib)
set(OPENSLIDE_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/openslide/include/openslide.lib)
设置opensilde库的头文件路径,${CMAKE_CURRENT_LIST_DIR}指当前cmakelists所在路径。ThirdParty是自己新建的文件夹,要把所有库放在该路径下,这里设置ThirdParty是为了和作者的库版本一致。
.lib文件为windows格式的静态库。.dll则是windows环境下的动态库。
set(OPENSLIDE_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/openslide/lib/libopenslide.lib)
这里我的理解是,导出的库.lib,是各种类的申明,实现则被分装在lib目录的lib文件中。
其余set语句都差不多,实际上,是要和后面的find_package联合起来用。
4、对pugixml_include.cmake进行重新编写
# - Find PugiXML library
# Find the native PugiXML includes
# This module defines
# PugiXML_INCLUDE_DIR, where to find PugiXML.hpp
# PugiXML_FOUND, If false, do not try to use PugiXML.
find_path (PUGIXML_INCLUDE_DIR
NAMES pugixml.hpp
PATHS ${PUGIXML_HOME}/include)
find_library (PUGIXML_LIBRARY
NAMES pugixml
PATHS ${PUGIXML_HOME}/lib)
# handle the QUIETLY and REQUIRED arguments and set PugiXML_FOUND to TRUE if
# all listed variables are TRUE
include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(PugiXML DEFAULT_MSG PUGIXML_LIBRARY
PUGIXML_INCLUDE_DIR)
if (PugiXML_FOUND)
set (PUGIXML_LIBRARIES ${PUGIXML_LIBRARY})
if (NOT PugiXML_FIND_QUITELY)
message (STATUS "PugiXML include=${PUGIXML_INCLUDE_DIR}")
message (STATUS "PugiXML library=${PUGIXML_LIBRARY}")
endif()
else ()
message (STATUS "No PugiXML found")
endif()
mark_as_advanced(PUGIXML_LIBRARY PUGIXML_INCLUDE_DIR)
5、在annotation模块中的cmakelists更改如下内容
在cmakelists中找到:
get_target_property(pugixml_include_dir ……..)
用#将其注释。没有这个属性,因此,注释掉。
6、执行bulid.bat
在vscode的终端或者命令行中,输入bulid.bat,回车执行,这个时候会有报错,跟着报错指示修改。
另外,ThirdParty中的pugixml需要进行,编译才能使用。
我已经编译好,放入ThirdParty中了,即不需要进行其他操作。
7、最后一步
最后看如果没有报错,就输入di,然后tab键,打开.sln文件,之后就自动进入了vs中,进入vs后,
点击
设置
把所有项目build一下,没有报错即安装成功。
另外把环境变量设置一下,则不会出现qt报错。
这里要注意是anaconda下的pkgs中的platform。