From 921779f9e74a661ecea7ef98212c1019330712fa Mon Sep 17 00:00:00 2001 From: xueyan hu <576627988@qq.com> Date: Mon, 24 Jan 2022 10:13:01 +0800 Subject: [PATCH] commit cmake file --- .gitignore | 6 ++++ CMakeLists.txt | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 .gitignore create mode 100644 CMakeLists.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..eadbccf --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +/build/ +/.vs/ +/thirdparty/ +/x64/ + +/.svn diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..5e23690 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,92 @@ +cmake_minimum_required(VERSION 2.8) +set(PROJECT_NAME CACHE STRING "project" ) +option(ENABLE_QT "ENABLE QT" ON) +project(OmegaV) +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +file(GLOB_RECURSE project_headers src/*.h) +file(GLOB_RECURSE project_cpps src/*.cpp) +file(GLOB_RECURSE project_cxx src/*.cxx) +file(GLOB_RECURSE project_cc src/*.cc) + +include_directories( + ${CMAKE_BINARY_DIR} + ${CMAKE_SOURCE_DIR}/src/include + ${CMAKE_SOURCE_DIR}/src/include/base + ${CMAKE_SOURCE_DIR}/src/include/callback + ${CMAKE_SOURCE_DIR}/src/include/dialog + ${CMAKE_SOURCE_DIR}/src/include/export + ${CMAKE_SOURCE_DIR}/src/include/global + ${CMAKE_SOURCE_DIR}/src/include/measure + ${CMAKE_SOURCE_DIR}/src/include/view + ${CMAKE_SOURCE_DIR}/src/include/view/subview + ${CMAKE_SOURCE_DIR}/src/include/cine + ${CMAKE_SOURCE_DIR}/src/include/util + ) + +add_subdirectory(thirdparty) +set(VTK_DIR "E:/3-Library/VTK-8.2.0/VTK/lib/cmake/vtk-8.2") +set(Qt5_DIR "D:/Qt/Qt5.12.0/5.12.0/msvc2017_64/lib/cmake/Qt5") +set(ITK_DIR "E:/3-Library/InsightToolkit-4.12.0/ITK/lib/cmake/ITK-4.12") +set(DCMTK_DIR "E:/3-Library/Dcmtk-3.6.4/DCMTK/cmake") + +set(ITK_RUNTIME_DIRS "E:/3-Library/InsightToolkit-4.12.0/ITK/bin") +set(DCMTK_RUNTIME_DIRS "E:/3-Library/Dcmtk-3.6.4/DCMTK/bin") + +set(DCM_NETWORK_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/thirdparty/dcm_network) +set(DCM_NETWORK_RUNTIME_DIRS ${CMAKE_BINARY_DIR}/thirdparty/dcm_network) + +set(ENABLE_QT ON) + +source_group(TREE ${CMAKE_SOURCE_DIR} FILES ${project_headers}) +source_group(TREE ${CMAKE_SOURCE_DIR} FILES ${project_cpps}) +source_group(TREE ${CMAKE_SOURCE_DIR} FILES ${project_cxx}) +source_group(TREE ${CMAKE_SOURCE_DIR} FILES ${project_cc}) + +if(ENABLE_QT) + message(${ENABLE_QT}) + find_package(Qt5 COMPONENTS Core Widgets Gui OpenGL REQUIRED) + set(CMAKE_AUTOMOC ON) + set(CMAKE_AUTORCC ON) + file(GLOB project_uis ./src/form/*.ui) + qt5_wrap_ui(ui_FILES ${project_uis}) + file(GLOB project_res ./src/*.qrc) + + source_group(TREE ${CMAKE_SOURCE_DIR} FILES ${project_uis}) + source_group(TREE ${CMAKE_SOURCE_DIR} FILES ${project_res}) + + add_executable(${PROJECT_NAME} ${project_headers} ${project_cpps} ${project_cxx} ${project_res} ${project_cc} ${ui_FILES}) + + target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Widgets Qt5::Gui Qt5::OpenGL) +else(ENABLE_QT) + add_executable(${PROJECT_NAME} ${project_headers} ${project_cpps} ${project_cxx} ${project_cc}) +endif(ENABLE_QT) + +find_package(VTK REQUIRED) +include(${VTK_USE_FILE}) +target_link_libraries(${PROJECT_NAME} ${VTK_LIBRARIES}) + +find_package(ITK REQUIRED) +include(${ITK_USE_FILE}) +target_link_libraries(${PROJECT_NAME} ${ITK_LIBRARIES}) + + +find_package(DCMTK REQUIRED) +include_directories(${DCMTK_INCLUDE_DIRS}) +if(DCMTK_LIBRARIES) + target_link_libraries(${PROJECT_NAME} ${DCMTK_LIBRARIES}) +endif() + + +if(MSVC) + set_target_properties(${PROJECT_NAME} PROPERTIES VS_DEBUGGER_ENVIRONMENT "path=${VTK_RUNTIME_DIRS};${Qt5_DIR}/../../../bin/;${ITK_RUNTIME_DIRS};${DCMTK_RUNTIME_DIRS};${DCM_NETWORK_RUNTIME_DIRS}/$") +endif(MSVC) + +include_directories(${DCM_NETWORK_INCLUDE_DIRS}) +target_link_libraries(${PROJECT_NAME} dcm_network) +add_dependencies(${PROJECT_NAME} dcm_network) + +set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:CONSOLE") +set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS") +#set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_RELEASE "/level='requireAdministrator' /uiAccess='false'")