Skip to content

Persistent xtensor Header Build Failure on Windows (MSVC/micromamba) #11

@Jezaen

Description

@Jezaen

Hello, I've attempted to get pyflowy running, but I seem to be running into an issue where the headers aren't being detected.

Building the project's C++ extension on Windows with Meson/Ninja, while using the micromamba/conda-forge toolchain, fails during the compilation phase due to an inability to locate the xtensor header files. This occurs even though xtensor is properly installed and detected by Meson.

Here is my build:

Operating System Windows 11
Python Version 3.12 (conda/micromamba)
C++ Toolchain MSVC (x64 Native Tools Command Prompt)
Package Manager micromamba (using conda-forge)
Build System Meson (1.9.0) / Ninja

Error Output

The Meson configuration phase succeeds and detects all dependencies, but the subsequent Ninja compilation phase fails immediately on the header inclusion:

[1/9] Compiling C++ object .../src_simulation.cpp.obj
...
C:\Users...\pyflowy\subprojects\flowy\flowy/include/definitions.hpp(6): fatal error C1

Steps to Reproduce

1. Set up the environment using MSVC: Open "x64 Native Tools Command Prompt" and run micromamba activate pyflowyenv.

2. Install all required dependencies: micromamba install -c conda-forge xtensor xtensor-blas vs2015_runtime -y.

3. Clean and attempt build:
    rmdir /s /q subprojects build
    git restore subprojects
    meson setup build --wipe
    pip install -e . --no-build-isolation

 4. The compilation step fails with the error above.

Troubleshooting (All Failed)

The issue is likely with Meson's internal handling of dependency paths on Windows, as the header is locatable but not linked during compilation.

Every known path-injection method was attempted with no change in the error:

  • Setting C++ environment variables (CPATH, CXXFLAGS, INCLUDE).
  • Setting Meson build options (-Dcpp_args="...").
  • Manually deleting and re-creating the symbolic link for xtensor headers in the conda environment's Library\include folder.
  • Forcing a physical copy of the xtensor headers into the environment's Library\include folder.
  • Uninstalling and reinstalling xtensor and related dependencies.

The Meson setup successfully reports Run-time dependency xtensor found: YES, but the compiler command generated by Meson/Ninja does not contain the correct -I path to the xtensor headers required for the subsequent subproject compilation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions