1

アプリケーションで DCMTK を使用し、コンパイルには cmake ファイルを使用します。cmake はすべてのライブラリを見つけます (ソース ファイルを .o ファイルにコンパイルするため、少なくともヘッダー)。唯一の問題は、リンク中に DCMTK の動的ライブラリを見つけようとすることです。1 つを静的としてコンパイルしたので、.so ファイルはありません。その結果、エラーが発生します: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})
4

1 に答える 1

1

${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
[...]

もう 1 つのヒント: 以前、インストールではなくビルドから DCMTK を検出すると、必ずしも適切に機能するとは限らないことに注意しました。

CMake で提供されているスクリプトで DCMTK を見つけるのに問題がある場合 (${DCMTK_LIBRARIES}たとえば、静的な DCMTK ライブラリへのパスが含まれていない場合)、この代替スクリプトを使用してみてください。

于 2015-05-07T16:11:18.417 に答える