Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to integrate xtensor-blas in cmake by using fetch_content #244

Open
Roy-Kid opened this issue Jun 18, 2024 · 1 comment
Open

How to integrate xtensor-blas in cmake by using fetch_content #244

Roy-Kid opened this issue Jun 18, 2024 · 1 comment

Comments

@Roy-Kid
Copy link

Roy-Kid commented Jun 18, 2024

Hi everyone,

I try to use cmake to manage my all dependencies. Here is the code I want it to download xtensor and related packages automatically if find_package is failed:

# define target
file(GLOB_RECURSE MOLCORE_SRC "./*.cpp")
add_library(
    molcore_molcore
    ${MOLCORE_SRC}
)

# introduce deps
find_package(xtl QUIET)
find_package(xtensor QUIET)
find_package(xtensor-blas QUIET)

if(NOT xtl_FOUND)
  message("downloading xtl source...")
  FetchContent_Declare(
    xtl
    GIT_REPOSITORY https://github.com/xtensor-stack/xtl.git
    GIT_TAG        master
  )
  FetchContent_MakeAvailable(xtl)
else()
  message("found xtl ${xtl_VERSION}")
endif()
if(NOT xtensor_FOUND)
  message("downloading xtensor source...")
  FetchContent_Declare(
    xtensor
    GIT_REPOSITORY https://github.com/xtensor-stack/xtensor.git
    GIT_TAG        master
    FIND_PACKAGE_ARGS NAMES xtensor
  )
  FetchContent_MakeAvailable(xtensor)
  target_include_directories(molcore_molcore PUBLIC "$<BUILD_INTERFACE:${xtensor_SOURCE_DIR}/include>" "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")
else()
  message("found xtensor ${xtensor_VERSION}")
  target_include_directories(molcore_molcore PUBLIC ${xtensor_INCLUDE_DIRS})
endif()
if(NOT xtensor-blas_FOUND)
  message("downloading xtensor-blas source...")
  FetchContent_Declare(
    xtensor-blas
    GIT_REPOSITORY https://github.com/xtensor-stack/xtensor-blas.git
    GIT_TAG        master
    FIND_PACKAGE_ARGS NAMES xtensor
  )
  FetchContent_MakeAvailable(xtensor-blas)
else()
  message("found xtensor-blas ${xtensor-blas_VERSION}")
endif()

It seems xtensor is found, but still error raises:

found xtl 0.7.2
found xtensor 0.23.10
downloading xtensor-blas source...
-- The C compiler identification is GNU 11.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- xtensor-blas v0.21.0
CMake Error (dev) at build/dev/_deps/xtensor-blas-src/CMakeLists.txt:49 (set):
  uninitialized variable 'XTENSOR_VERSION_MAJOR'
This error is for project developers. Use -Wno-error=dev to suppress it.

Can you give a receipt about integrating xtensor using cmake instead of conda? I also tried spack, but it was also a little difficult to get a head-only file.

@Roy-Kid
Copy link
Author

Roy-Kid commented Jun 18, 2024

I think FetchContent is work for xtl and xtensor, but not for xtensor-blas

FetchContent_Declare(
    xtensor-blas
    GIT_REPOSITORY https://github.com/xtensor-stack/xtensor-blas.git
)
FetchContent_MakeAvailable(xtensor-blas)

error:

local xtensor-blas not found, downloading from github...
-- xtensor-blas v0.21.0
-- Found xtensor v0.25.0
CMake Warning (dev) at build/dev/_deps/xtensor-blas-src/CMakeLists.txt:163 (set):
  uninitialized variable '_XTENSOR_CMAKE_SIZEOF_VOID_P'
This warning is for project developers.  Use -Wno-dev to suppress it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant