msvc 编译路径_windows编译CTK框架

MingW编译

一、什么是CTK

总的来说就是一个框架,里面所有的对面如登录界面、日志功能、数据接收功能、解析功能、数据库访问都当做插件的形式,能够有效降低代码间的耦合。

CTK包含好几个核心功能:Plugin Framework、Widgets、DICOM、DICOM Application Hosting、Command Line Interfaces,这里主要是使用Plugin Framework。

插件就是动态库, 插件技术是使用c++中的多态,定义抽象类接口, 然后再PLugin中实现抽象类接口。 
plugin可以动态加载, 动态更新。可以实现应用的热插拔技术。对内存的使用效率比较高。 
当要使用的时候用interface 类指针指向 Plugin 就可以使用插件中的函数了。 
CTK系统可以管理这些插件, 当需要的时候就可以直接从系统中获取相应的插件。然后用想用的抽象接口指向这个插件就可以使用了。

ps:

CTK官网:https://commontk.org/index.php/Main_Page

git:https://github.com/commontk/CTK

二、环境准备

1、安装Qt5.12.2【只使用了这个版本】

2、安装Cmake【使用的是3.17.3】

3、配置环境变量【貌似没有用到】

19637d58616967ed6f9955da8a6e5835.png

4、下载CTK包和CTKData包,解压,CTKData放在CTK根目录里

f06bab4d248a05a1a89b06fd42b5f100.png

 5、修改Qt版本,CTK-master\CMake\ctkMacroSetupQt.cmake,将4改为5

cbce8eeb39168522e6b33571e33b2e08.png

6、设置CTKData路径,CTK-master\CMakeExternals\CTKData.cmake

添加如下:

#set CTKData_path
set(CTKData_DIR ${CMAKE_CURRENT_SOURCE_DIR}/CTKData)

f6a71ea28f524a7553cbd8f86276821b.png

7、修改安装选项,如果不设置就不会安装,CTK-master\SuperBuild.cmake

添加:

b3da8941c6747a852ac70298f1fbca60.png

#add install command
if(WIN32)
set(_INSTALL_CMD nmake install)
else()
set(_INSTALL_CMD make install)
endif()

b3da8941c6747a852ac70298f1fbca60.png

修改:

INSTALL_COMMAND ${_INSTALL_CMD}

2aa1ca97691a766954d5f66e2b7ec2ca.png

8、在CTK根目录下新建build文件夹,用于存放生成的文件

 三、生成makefile

1、打开CMake gui,直接将CTK下的CMakelist.txt拖到空白处,然后选择build的路径为上面的build文件夹

ec8cea264e7c329141fed29a8cf15a7a.png

 2、配置编译器环境

点击configure,弹出框,选择Mingw,选择第二个手动设置编译器,确定

 8e03495dd7f908f132a92f67a01835c4.png

 3、会弹出一个设置编译器的对话框,对应选择即可

c7f9c059555c45ad077f58e56d797f58.png

 4、然后会自动开始configure,但是报错

524ada6ca6f0a43d9623c848deb03124.png

 是因为没有设置Qt的路径

5、输入Qt5_Dir,对应设置即可

a6d4f971e8c3c71aff8d8e29ea248b7b.png

6、然后重新configure,没报错

7、点击Generate,生成makefile

4e3574acbdda0348fd4b67ad37b7a249.png

 8、现在基本环境都ok了,但是需要打开我们希望生成的pluginframework

生成通信工具:

85e9ee77be7b0c2292f461031985fde2.png

上面的工具Cmakelist里依赖如下的定义,也勾选上,不然报错:

6aefc91646bca381e6ca3ee24dd18415.png

 生成ctk框架:

 0e75bb334b81fc6e46a3d0067d4b37bf.png

生成lib:

 bea75393dfd960eff9b7ab44bf66f9f6.png

 关闭test,不然会报错:

8ca4cc92efc79eb87493e9445a204f3a.png

 设置输出类型:【debug很大,但是便于调试】

1acbfec8cbe5c2ddd20c3339b576c0a2.png

 设置安装路径:

a95ce888ba30209c74a722cdd3e649ac.png

 四、执行makefile

1、打开cmd,进入build目录

2、执行mingw32-make

b3b22bcc0b72474f387abf2fa450cee0.png

3、报语法错误,删除对应文件的语法错误

d83e40a2f651afa0ee33ac5b478d80ab.png

 对应修改

ecbe8f0bc4782a17b77cb276e75f414c.png

 把这个括号去掉。

4、重新编译,等待几分钟生成dll 

0abf6d100438aa3a3927467415fbe144.png

 824d126d6980cb8f263ba4e9c2b0500a.png

 MSVC编译

一、环境准备

1、安装Qt5.12.2【只使用了这个版本】

2、安装Cmake【使用的是3.17.3】

3、安装VS2015【只使用了这个版本】 

4、下载CTK包和CTKData包,解压,CTKData放在CTK根目录里

f06bab4d248a05a1a89b06fd42b5f100.png

 5、修改Qt版本,CTK-master\CMake\ctkMacroSetupQt.cmake,将4改为5

cbce8eeb39168522e6b33571e33b2e08.png

6、设置CTKData路径,CTK-master\CMakeExternals\CTKData.cmake

添加如下:

#set CTKData_path
set(CTKData_DIR ${CMAKE_CURRENT_SOURCE_DIR}/CTKData)

f6a71ea28f524a7553cbd8f86276821b.png

7、在CTK根目录下新建build文件夹,用于存放生成的文件

二、生成sln解决方案

0、按照mingw同样修改相关配置,注意这个一起修改

ecbe8f0bc4782a17b77cb276e75f414c.png

1、选择vs2015来编译

7bde65c2d0a02a0137e9914464ae6dec.png

 选择64位,因为我Qt里的MSVC只有2015 64位的

8e71b12399fb4498f3da2725de6c62bb.png

 2、报错没有Qt的路径

e796b6e97ec1a370df22c815122a2df4.png

 3、设置Qt路径

e796cd6fbe7ffe89c4ce14de0232f36f.png

4、配置需要生成的文件

生成通信工具:

85e9ee77be7b0c2292f461031985fde2.png

上面的工具Cmakelist里依赖如下的定义,也勾选上,不然报错:

6aefc91646bca381e6ca3ee24dd18415.png

 生成ctk框架:

 0e75bb334b81fc6e46a3d0067d4b37bf.png

生成lib:

 bea75393dfd960eff9b7ab44bf66f9f6.png

 关闭test,不然会报错:

8ca4cc92efc79eb87493e9445a204f3a.png

5、然后点击configurate和generate,就会生成sln,然后直接点击打开工程

4096962eb71786833a552ceb6805fe52.png

 f760ad8ada5a931a9ea1c6fc41f68c91.png

 VS2015便会自动打开此工程

三、编译生成动态库

1、VS2015打开后是这样的

4d80536275cdfde4cda071f70b606fed.png

 2、直接右键all_build重新生成解决方,等待几分钟,没有报错

be689fbd3644a23e5cb107353b1a7a77.png

 3、这时已经色生成了相关的动态库

842191258c017b73d54e8017ea024e3f.png

其他注意事项:

1、注意版本,如Qt里MSVC的版本是64,如果在CMake GUI里选择32,最终VS里编译就会报错,一定要保持一致

2、如果有时候报错,又不知道是什么错,可能是因为我们新建的build文件夹即用来生成mingw的,然后又用来生成msvc的,Cmake gui没反应过来,把build文件夹的东西都删除掉就好了

3、即使勾选上了lib_pliugin,mingw也不会生成lib,而msvc会生成

4、源文件ctkLDAPExpr.cpp确实有错,这个应该事先我们就改一下,"QStirng()()"这不应该有两个括号

5、如果希望生成eventAdmin,那么一定要勾选上widget相关库,不然会报错。因为eventAdmin的makelist里有一个宏,定义在widget的makelist里面

6、Mingw可以选择生成的type是debug还是release,MSVC不用,貌似都是一体的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值