Conversation
|
Currently, we handle dependencies through CMake's FetchContent with optional flags to use a system-provided version of the given library. I think the same approach should work fine with @MRtrix3/mrtrix3-devs as an aside, I think this issue highlights some of the limitations of using FetchContent for dependency handling, as dealing with transitive dependencies is not straightforward and we may want to consider adopting a package manager like |
|
I think we should keep it as simple as possible for now, and document the expectations sufficiently for other developers. As long as regular users can use the binaries we produce, they won't care either way. It's a relatively small subset of people who might benefit from transitioning to a more complex package manager, and few of them will be particularly upset if they need to install other packages manually. Realistically, I don't think it's worth investing much time in finessing the developer experience... The bigger issue is whether we need to bundle these additional dependencies in the binary packages (which I assume we should?). |
|
I'm not perturbed about specifically inheriting a |
|
@mattcieslak Given the comments above, I think adding something along the lines of: if(MRTRIX_USE_SYSTEM_TRXCPP)
find_package(trx-cpp CONFIG REQUIRED)
else()
set(trxcpp_url "https://github.com/tee-ar-ex/trx-cpp")
FetchContent_Declare(
trx-cpp
DOWNLOAD_EXTRACT_TIMESTAMP ON
GIT_REPOSITORY ${trxcpp_url}
GIT_TAG ea9ebcbf4b08e047e6493eb8077f789cdfac36b7
)
FetchContent_MakeAvailable(trx-cpp)
endif()in |
This adds picks up where #3262 left off, adding TRX support to tckconvert, updates the documentation and adds tests. It depends on MRtrix3/test_data#6 to pass the tests.
I haven't added trx-cpp to any of the builds - I was hoping for some input on how would be most convenient to do so.
Thanks in advance!