簡體   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