作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道这是个老问题,但我试图搜索 StackOverFlow 并没有找到任何适合我的好答案。所以我试图重新发布这个。
我正在使用 linux 并尝试使用 CMake 和 Make 命令构建代码。
我尝试将自己的代码分开,例如 http://docs.mitk.org/nightly/BuildInstructionsPage.html .我使用这个 CMakeLists.txt
cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
project(MyProject)
find_package(MITK 2018.04.02 REQUIRED)
add_executable(MyApp main.cpp)
target_link_libraries(MyApp MitkCore)
Could not find a package configuration file provided by "MITK" with any of the following names:
MITKConfig.cmake
mitk-config.cmake
最佳答案
我要展示的内容仅在 Pop!_OS 18.04 上使用 2018.04.99 版本进行了测试。Step3
可以用这个 CMakeLists.txt
编译示例:
cmake_minimum_required(VERSION 3.17 FATAL_ERROR)
project(step3)
set(MITK_SUPERBUILD_DIR "/usr/mitk-build")
set(QT_DIR "/home/pop_os")
set(CMAKE_PREFIX_PATH
"${MITK_SUPERBUILD_DIR}/MITK-build"
"${MITK_SUPERBUILD_DIR}/ep/src/VTK/CMake/"
"${QT_DIR}/Qt/5.12.8/gcc_64/lib/cmake/Qt5"
)
find_package(MITK CONFIG REQUIRED)
find_package(OpenMP REQUIRED)
add_executable(${PROJECT_NAME} Step3.cpp)
target_link_libraries(${PROJECT_NAME} PUBLIC_HEADER
MitkCore
MitkQtWidgetsExt
)
我正在开发一个更复杂的应用程序,它在模块(静态库)中分离,我有一个顶级
CMakeLists.txt
它调用子子项目:
cmake_minimum_required(VERSION 3.17 FATAL_ERROR)
project(covid-gui-desktop LANGUAGES CXX)
# Qt compilations system variables.
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set (CMAKE_AUTOMOC ON) # enables linker to qt moc headers
set (CMAKE_AUTOUIC ON) # enables linker to .ui files
set (CMAKE_AUTORCC ON) # enables linker to .qrc files
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_COLOR_MAKEFILE ON)
set(MITK_SUPERBUILD_DIR "/usr/mitk-build")
set(QT_PATH "/home/pop_os")
set(CMAKE_PREFIX_PATH
"${MITK_SUPERBUILD_DIR}/MITK-build/"
"${MITK_SUPERBUILD_DIR}/ep/src/VTK/CMake/"
"${QT_PATH}/Qt/5.12.8/gcc_64/lib/cmake/Qt5/"
)
find_package(MITK CONFIG REQUIRED)
find_package(OpenMP REQUIRED)
find_package(Qt5 5.12 COMPONENTS Widgets Charts Svg REQUIRED)
### Static libraries
add_subdirectory(modules/AppDataManager)
add_subdirectory(modules/DarkStyle)
add_subdirectory(modules/VolumeVisualizationView)
add_subdirectory(modules/ThumbnailListView)
add_subdirectory(modules/DataManagerView)
###
set(cpp_files
main.cpp
MainWindow.cpp
# Database / file managment
Utils.cpp
# Interface
Concept1.cpp
Concept2.cpp
Concept3.cpp
)
set(header_files
MainWindow.h
# Database / file managment
Utils.h
# Interface
Concept1.h
Concept2.h
Concept3.h
)
set(ui_files
MainWindow.ui
Concept1.ui
Concept2.ui
Concept3.ui
)
set(qrc_files
resource.qrc
)
set(files ${cpp_files} ${header_files} ${ui_files} ${qrc_files})
add_executable(${PROJECT_NAME} ${files})
target_link_libraries(${PROJECT_NAME} PUBLIC
MitkCore
MitkQtWidgetsExt
Qt5::Widgets
Qt5::Charts
Qt5::Svg
AppDataManager
DarkStyle
VolumeVisualizationView
DataManagerView
)
target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_14)
target_include_directories(${PROJECT_NAME} PUBLIC
"${CMAKE_SOURCE_DIR}/modules/AppDataManager"
"${CMAKE_SOURCE_DIR}/modules/DarkStyle"
"${CMAKE_SOURCE_DIR}/modules/VolumeVisualizationView"
"${CMAKE_SOURCE_DIR}/modules/DataManagerView"
)
target_include_directories()
允许 IDE 查找静态库 .h 和 .cpp 文件。对于
MITK
这已经由
find_package()
完成.
add_subdirectory()
调用
CMakeLists.txt
在静态库文件夹中。这是用于
AppDataManager
的那个:
cmake_minimum_required(VERSION 3.17)
project(AppDataManager LANGUAGES CXX)
# Qt compilations system variables.
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set (CMAKE_AUTOMOC ON) # enable linker to qt headers
set (CMAKE_AUTOUIC ON) #
set (CMAKE_AUTORCC ON) # enable link to qrc
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_COLOR_MAKEFILE ON)
set(MITK_SUPERBUILD_DIR "/usr/mitk-build")
set(QT_PATH "/home/pop_os")
set(CMAKE_PREFIX_PATH
"${MITK_SUPERBUILD_DIR}/MITK-build/"
"${MITK_SUPERBUILD_DIR}/ep/src/VTK/CMake/"
"${QT_PATH}/Qt/5.12.8/gcc_64/lib/cmake/Qt5/"
)
find_package(MITK CONFIG REQUIRED)
find_package(OpenMP REQUIRED)
find_package(Qt5 COMPONENTS Widgets REQUIRED)
set(cpp_files
AppDataManager.cpp
)
set(header_files
AppDataManager.h
)
add_library(${PROJECT_NAME} STATIC ${cpp_files} ${header_files})
target_compile_definitions(${PROJECT_NAME} PUBLIC cxx_std_14)
# Required on Unix OS family to be able to be linked into shared libraries.
set_target_properties(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
target_link_libraries(${PROJECT_NAME} PUBLIC
MitkCore
MitkQtWidgetsExt
Qt5::Widgets
)
可能有一个模块(静态库)依赖于另一个模块。
AppDataManager
被顶级应用程序和
DataManagerView
使用。 .如果我们使用
CMakeLists.txt
类似于我们可以编译的最后一个
DataManagerView
作为一个独立的库成功,但由于我们调用
add_subdirectory(modules/AppDataManager)
,顶层将失败两次,为了避免这种情况,我想出了这个 CMakeLists.txt:
cmake_minimum_required(VERSION 3.17)
project(DataManagerView LANGUAGES CXX)
# Qt compilations system variables.
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set (CMAKE_AUTOMOC ON) # enable linker to qt headers
set (CMAKE_AUTOUIC ON) #
set (CMAKE_AUTORCC ON) # enable link to qrc
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_COLOR_MAKEFILE ON)
set(MITK_SUPERBUILD_DIR "/usr/mitk-build")
set(QT_PATH "/home/pop_os")
set(CMAKE_PREFIX_PATH
"${MITK_SUPERBUILD_DIR}/MITK-build/"
"${MITK_SUPERBUILD_DIR}/ep/src/VTK/CMake/"
"${QT_PATH}/Qt/5.12.8/gcc_64/lib/cmake/Qt5/"
)
find_package(MITK CONFIG REQUIRED)
find_package(OpenMP REQUIRED)
find_package(Qt5 COMPONENTS Widgets REQUIRED)
set(cpp_files
DataManagerView.cpp
QmitkDataManagerItemDelegate.cpp
)
set(header_files
DataManagerView.h
QmitkDataManagerItemDelegate.h
)
set(ui_files
DataManagerView.ui
)
add_library(${PROJECT_NAME} STATIC ${cpp_files} ${header_files} ${ui_files})
target_compile_definitions(${PROJECT_NAME} PUBLIC cxx_std_14)
set(AppDataManager_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../AppDataManager/")
###
# Checks whether this project is the main one or a subdirectory.
###
if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
# I am top-level project.
add_subdirectory(${AppDataManager_PATH} build/)
else()
# I am called from other project with add_subdirectory().
# Required on Unix OS family to be able to be linked into shared libraries.
set_target_properties(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif()
###
target_link_libraries(${PROJECT_NAME} PUBLIC
MitkCore
MitkQtWidgetsExt
Qt5::Widgets
AppDataManager
)
target_include_directories(${PROJECT_NAME} PUBLIC ${AppDataManager_PATH})
在我撰写此答案时,这些代码是当前正在开发的开源项目的一部分。
关于c++ - 如何使用 MITK 作为库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58161124/
我知道这是个老问题,但我试图搜索 StackOverFlow 并没有找到任何适合我的好答案。所以我试图重新发布这个。 我正在使用 linux 并尝试使用 CMake 和 Make 命令构建代码。 我尝
我正在为 MITK 开发一个插件,这是一个用于医学成像的工具。我想访问数据管理器中加载的图像的完整路径。 图像有名称、不透明度、路径等属性。 我搜索了 MITK 文档,但找不到与此相关的任何适当信息。
我需要 MITK 方面的帮助。我正在尝试在 MITK 下绘制点和线(实际上我的目标是显示虚拟结肠镜检查中心线)。我创建了一个包含中心线数据的 vtkPolyData。这被包装到一个 mitk::Sur
我是一名优秀的程序员,十分优秀!