Files
UR/CMakeLists.txt
2023-12-22 11:06:13 +08:00

116 lines
4.8 KiB
CMake
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

cmake_minimum_required(VERSION 3.16)
project(UR)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_CUDA_COMPILER /usr/local/cuda/bin/nvcc)
enable_language(CUDA)
find_package(CUDAToolkit REQUIRED)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
add_definitions(-DUSE_CUDA)
# set(BUILD_SHARED_LIBS ON)
if (${BUILD_SHARED_LIBS})
set(MKL_INTERFACE_FULL intel_lp64)
set(MKL_LINK static)
endif()
find_package(Aurora REQUIRED)
find_package(Parser REQUIRED)
find_package(Req REQUIRED)
find_package(URDepends REQUIRED)
find_package(DCMTK REQUIRED)
set(DCMTK_WITH_JPEG OFF)
file(GLOB_RECURSE cpp_files ./src/*.cpp)
file(GLOB_RECURSE cu_files ./src/*.cu)
file(GLOB_RECURSE header_files ./src/*.h ./src/*.cuh)
if (${BUILD_SHARED_LIBS})
set(cxx_files ./src/UR.cxx)
find_package(MKL CONFIG REQUIRED)
set(MKL_INTERFACE_FULL intel_lp64)
add_library(UR SHARED ${cpp_files} ${cxx_files} ${header_files} ${Aurora_Source})
target_compile_options(UR PUBLIC $<TARGET_PROPERTY:MKL::MKL,INTERFACE_COMPILE_OPTIONS>)
target_include_directories(UR PUBLIC $<TARGET_PROPERTY:MKL::MKL,INTERFACE_INCLUDE_DIRECTORIES>)
target_link_libraries(UR PUBLIC $<LINK_ONLY:MKL::MKL>)
target_link_libraries(UR PUBLIC OpenMP::OpenMP_CXX)
else()
set(cxx_files ./src/main.cxx)
add_executable(UR ${cpp_files} ${cu_files} ${cxx_files} ${header_files} ${Aurora_Source})
target_compile_options(UR PUBLIC ${Aurora_Complie_Options} )
endif()
target_include_directories(UR PUBLIC ./src/)
target_include_directories(UR PUBLIC ${Aurora_INCLUDE_DIRS})
target_include_directories(UR PUBLIC ${DCMTK_INCLUDE_DIRS})
target_include_directories(UR PUBLIC ${Req_INCLUDES_DIRS})
target_include_directories(UR PUBLIC ${Parser_INCLUDE_DIRS})
target_include_directories(UR PUBLIC ${URDepends_INCLUDES_DIRS})
target_include_directories(UR PUBLIC ${DCMTK_INCLUDE_DIRS})
target_link_libraries(UR PUBLIC ${Aurora_Libraries})
target_link_libraries(UR PUBLIC dcmdata)
target_link_libraries(UR PUBLIC matio)
target_link_libraries(UR PUBLIC Req)
target_link_libraries(UR PUBLIC Parser)
target_link_libraries(UR PUBLIC URDepends::TransDetection)
target_link_libraries(UR PUBLIC URDepends::eikonal)
target_link_libraries(UR PUBLIC URDepends::TVALGPU)
target_link_libraries(UR PUBLIC URDepends::SaftTofi)
target_link_libraries(UR PUBLIC dcmdata)
target_include_directories(UR PRIVATE ./src /usr/local/cuda/include)
set_target_properties(UR PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
#target_compile_options(UR PRIVATE ${Aurora_Complie_Options} "-march=native")
# target_compile_options(UR PRIVATE $<$<COMPILE_LANGUAGE:CUDA>:
#                        --use_fast_math
#                        --ptxas-options=-v
#                        -arch sm_75
#                        >)
target_compile_options(UR PRIVATE $<$<COMPILE_LANGUAGE:CUDA>:
-arch=sm_75 --expt-extended-lambda
>)
target_link_libraries(UR PRIVATE ${CUDA_RUNTIME_LIBRARY} CUDA::cufft CUDA::cudart)
# target_link_libraries(UR PUBLIC URDepends::SaftATT)
find_package(GTest REQUIRED)
INCLUDE_DIRECTORIES(${GTEST_INCLUDE_DIRS})
enable_testing()
file(GLOB_RECURSE test_cpp test/*.cpp)
add_executable(UR_Test ${cpp_files} ${header_files} ${Aurora_Source} ${test_cpp} )
target_include_directories(UR_Test PUBLIC ./test/ ./src/ /usr/local/cuda/include)
set_target_properties(UR_Test PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
# target_compile_options(UR_Test PUBLIC ${Aurora_Complie_Options} "-march=native")
target_include_directories(UR_Test PUBLIC ./src/)
target_include_directories(UR_Test PUBLIC ${Aurora_INCLUDE_DIRS})
target_include_directories(UR_Test PUBLIC ${DCMTK_INCLUDE_DIRS})
target_include_directories(UR_Test PUBLIC ${Req_INCLUDES_DIRS})
target_include_directories(UR_Test PUBLIC ${Parser_INCLUDE_DIRS})
target_include_directories(UR_Test PUBLIC ${URDepends_INCLUDES_DIRS})
target_include_directories(UR_Test PUBLIC ${DCMTK_INCLUDE_DIRS})
# 必须写前面不然容易出问题
target_link_libraries(UR_Test PUBLIC ${GTEST_BOTH_LIBRARIES})
target_link_libraries(UR_Test PUBLIC ${Aurora_Libraries})
target_link_libraries(UR_Test PUBLIC dcmdata)
target_link_libraries(UR_Test PUBLIC matio)
target_link_libraries(UR_Test PUBLIC Req)
target_link_libraries(UR_Test PUBLIC Parser)
# target_link_libraries(UR_Test PUBLIC ${Parser_Libraries})
target_link_libraries(UR_Test PUBLIC Parser)
target_link_libraries(UR_Test PUBLIC URDepends::TransDetection)
target_link_libraries(UR_Test PUBLIC URDepends::eikonal)
target_link_libraries(UR_Test PUBLIC URDepends::TVALGPU)
target_link_libraries(UR_Test PUBLIC URDepends::SaftTofi)
target_link_libraries(UR_Test PUBLIC dcmdata)
target_compile_options(UR_Test PRIVATE $<$<COMPILE_LANGUAGE:CUDA>:
-arch=sm_75 --expt-extended-lambda
>)
target_link_libraries(UR_Test PRIVATE ${CUDA_RUNTIME_LIBRARY} CUDA::cufft CUDA::cudart)
gtest_discover_tests(UR_Test)