|
a |
|
b/CMakeLists.txt |
|
|
1 |
cmake_minimum_required(VERSION 3.16.3...3.26) |
|
|
2 |
|
|
|
3 |
project(ants LANGUAGES CXX) |
|
|
4 |
|
|
|
5 |
# Set the macOS SDK root |
|
|
6 |
if (CMAKE_SYSTEM_NAME STREQUAL "Darwin") |
|
|
7 |
execute_process( |
|
|
8 |
COMMAND xcrun --show-sdk-path |
|
|
9 |
OUTPUT_VARIABLE SDK_PATH |
|
|
10 |
OUTPUT_STRIP_TRAILING_WHITESPACE |
|
|
11 |
) |
|
|
12 |
set(CMAKE_OSX_SYSROOT ${SDK_PATH}) |
|
|
13 |
message(STATUS "Using macOS SDK: ${CMAKE_OSX_SYSROOT}") |
|
|
14 |
endif() |
|
|
15 |
|
|
|
16 |
set(CMAKE_POSITION_INDEPENDENT_CODE ON) |
|
|
17 |
|
|
|
18 |
# Try to import all Python components potentially needed by nanobind |
|
|
19 |
find_package(Python 3.8 |
|
|
20 |
REQUIRED COMPONENTS Interpreter Development.Module) |
|
|
21 |
|
|
|
22 |
# Import nanobind through CMake's find_package mechanism |
|
|
23 |
find_package(nanobind CONFIG REQUIRED) |
|
|
24 |
|
|
|
25 |
# TODO: make this run only if ITK + ANTs are not already built |
|
|
26 |
if(CMAKE_SYSTEM_NAME STREQUAL "Windows") |
|
|
27 |
execute_process(COMMAND cmd /c ${PROJECT_SOURCE_DIR}/scripts/configure_ITK.bat) |
|
|
28 |
execute_process(COMMAND cmd /c ${PROJECT_SOURCE_DIR}/scripts/configure_ANTs.bat) |
|
|
29 |
else() |
|
|
30 |
execute_process(COMMAND bash ${PROJECT_SOURCE_DIR}/scripts/configure_ITK.sh) |
|
|
31 |
execute_process(COMMAND bash ${PROJECT_SOURCE_DIR}/scripts/configure_ANTs.sh) |
|
|
32 |
endif() |
|
|
33 |
|
|
|
34 |
# ITK |
|
|
35 |
set(ITK_DIR "./itkbuild") |
|
|
36 |
find_package(ITK REQUIRED) |
|
|
37 |
include(${ITK_USE_FILE}) |
|
|
38 |
|
|
|
39 |
# ANTS |
|
|
40 |
add_library(antsUtilities STATIC src/antscore/antsUtilities.cxx src/antscore/antsCommandLineOption.cxx src/antscore/antsCommandLineParser.cxx src/antscore/ReadWriteData.cxx src/antscore/ANTsVersion.cxx) |
|
|
41 |
add_library(registrationUtilities STATIC src/antscore/antsRegistrationTemplateHeader.cxx |
|
|
42 |
src/antscore/antsRegistration2DDouble.cxx src/antscore/antsRegistration2DFloat.cxx |
|
|
43 |
src/antscore/antsRegistration3DDouble.cxx src/antscore/antsRegistration3DFloat.cxx |
|
|
44 |
src/antscore/antsRegistration4DDouble.cxx src/antscore/antsRegistration4DFloat.cxx) |
|
|
45 |
|
|
|
46 |
|
|
|
47 |
add_library(imageMathUtilities STATIC src/antscore/ImageMathHelper2D.cxx src/antscore/ImageMathHelper3D.cxx src/antscore/ImageMathHelper4D.cxx) |
|
|
48 |
|
|
|
49 |
# this may not be needed |
|
|
50 |
target_link_libraries(antsUtilities ${ITK_LIBRARIES}) |
|
|
51 |
target_link_libraries(registrationUtilities ${ITK_LIBRARIES}) |
|
|
52 |
target_link_libraries(imageMathUtilities ${ITK_LIBRARIES}) |
|
|
53 |
|
|
|
54 |
nanobind_add_module( |
|
|
55 |
lib |
|
|
56 |
NB_STATIC |
|
|
57 |
src/main.cpp |
|
|
58 |
src/antscore/antsAffineInitializer.cxx |
|
|
59 |
src/antscore/antsApplyTransforms.cxx |
|
|
60 |
src/antscore/antsApplyTransformsToPoints.cxx |
|
|
61 |
src/antscore/antsJointFusion.cxx |
|
|
62 |
src/antscore/antsRegistration.cxx |
|
|
63 |
src/antscore/Atropos.cxx |
|
|
64 |
src/antscore/AverageAffineTransform.cxx |
|
|
65 |
src/antscore/AverageAffineTransformNoRigid.cxx |
|
|
66 |
src/antscore/CreateJacobianDeterminantImage.cxx |
|
|
67 |
src/antscore/DenoiseImage.cxx |
|
|
68 |
src/antscore/iMath.cxx |
|
|
69 |
src/antscore/KellyKapowski.cxx |
|
|
70 |
src/antscore/LabelClustersUniquely.cxx |
|
|
71 |
src/antscore/LabelGeometryMeasures.cxx |
|
|
72 |
src/antscore/N3BiasFieldCorrection.cxx |
|
|
73 |
src/antscore/N4BiasFieldCorrection.cxx |
|
|
74 |
src/antscore/ResampleImage.cxx |
|
|
75 |
src/antscore/ThresholdImage.cxx |
|
|
76 |
src/antscore/TileImages.cxx |
|
|
77 |
) |
|
|
78 |
target_compile_options(lib PRIVATE -O3) |
|
|
79 |
target_link_libraries(lib PRIVATE ${ITK_LIBRARIES} antsUtilities registrationUtilities imageMathUtilities) |
|
|
80 |
|
|
|
81 |
# Install directive for scikit-build-core |
|
|
82 |
install(TARGETS lib LIBRARY DESTINATION ants) |