繁体   English   中英

静态链接DCMTK库

[英]Static linking DCMTK library

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

我使用Ubuntu 14.04 x64。

这使我非常困惑。 那么,有什么问题呢?

cmake文件:

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})

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

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

 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库的路径),则可以尝试使用此替代脚本

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM