首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >静态链接DCMTK库

静态链接DCMTK库
EN

Stack Overflow用户
提问于 2015-05-07 05:22:51
回答 1查看 1.6K关注 0票数 1

我在我的应用程序中使用DCMTK,编译时使用cmake文件。cmake查找所有库(至少是头库,因为在将源文件编译到.o文件中),唯一的问题是在链接过程中,它试图为DCMTK找到动态库。我编译了一个静态文件,所以我没有.so文件。因此,它给了我错误:No rule to make target /usr/lib/libdcmdata.so, needed by dcm_seg. Stop.

我使用Ubuntu14.04 x64。

这让我很困惑。那么,有什么问题?

cmake档案:

代码语言:javascript
复制
cmake_minimum_required(VERSION 2.6)

project(dcm_segm)

set(CMAKE_CXX_FLAGS "-std=c++0x ${CMAKE_CXX_FLAGS} -g -ftest-coverage -fprofile-arcs")

set(Boost_USE_STATIC_LIBS ON)
set(OpenCV_USE_STATIC_LIBS ON)
set(DCMTK_USE_STATIC_LIBS ON)
set(OpenCV_STATIC ON)

find_package( VTK REQUIRED )
find_package( OpenCV REQUIRED )
find_package( Boost COMPONENTS system filesystem REQUIRED )
find_package( DCMTK  REQUIRED )

include(${VTK_USE_FILE} )

link_directories(${OpenCV_LIB_DIR})

add_executable(dcm_seg main.cpp DICOMin.cpp Ensemble.cpp Ensemble3dExtension.cpp point_3d.cpp RegionGrow.cpp)

target_link_libraries(dcm_seg ${VTK_LIBRARIES} ${OpenCV_LIBS} ${DCMTK_LIBRARIES} ${Boost_LIBRARIES})
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-07 16:11:18

您能否检查${DCMTK_LIBRARIES}的内容(它应该是DCMTK静态库的路径列表)?

您还可以在CMake配置期间检查以下CMake条目:

代码语言:javascript
复制
 DCMTK_DIR                        /path/to/DCMTK/install
 DCMTK_config_INCLUDE_DIR         /path/to/DCMTK/install/include/dcmtk/config
 DCMTK_dcmdata_INCLUDE_DIR        /path/to/DCMTK/install/dcmdata/include/dcmtk/dcmdata
 DCMTK_dcmdata_LIBRARY_DEBUG      /path/to/DCMTK/install/dcmdata/libsrc/libdcmdata.a
 DCMTK_dcmdata_LIBRARY_RELEASE    /path/to/DCMTK/install/dcmdata/libsrc/libdcmdata.a
[...]

另一个提示:我在过去注意到,从构建中找到DCMTK,而不是安装,并不总是正常工作。

如果您在使用CMake提供的脚本查找DCMTK时遇到困难(例如,${DCMTK_LIBRARIES}不包含指向静态DCMTK库的路径),则可以尝试使用此替代脚本

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30092541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档