Problem with windows_vulkan_sdk when installing mrtrix3 on Windows

Dear MRtrix3 community,

I am trying to install MRtrix3 on my laptop running with Windows. When I put in configure, the process could not get through. The configure log file also mentioned of “Cannot find feature windows_vulkan_sdk”. I am attaching the log file below, hope someone could help me to figure it out.
Thank you so much,
Jane

REPORT: 
MRtrix build type requested: release version

REPORT: Detecting OS: windows

REPORT: Looking for compiler [g++]:
EXEC <<
CMD: g++ --version
EXIT: 0
STDOUT:
g++.exe (Rev2, Built by MSYS2 project) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>>


REPORT: g++.exe (Rev2, Built by MSYS2 project) 9.2.0

REPORT: Checking for C++11 compliance:

COMPILE /tmp/tmpd974z5bt.cpp:
---

#include <cstddef>
struct Base {
    Base (int);
};
struct Derived : Base {
    using Base::Base;
};

int main() {
  Derived D (int); // check for contructor inheritance
  return 0;
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -DMRTRIX_WINDOWS -mms-bitfields -Wa,-mbig-obj -D_FILE_OFFSET_BITS=64 /tmp/tmpd974z5bt.cpp -o /tmp/tmpd974z5bt.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpd974z5bt.o -Wl,--sort-common,--as-needed -pthread -Wl,--allow-multiple-definition -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
>>


REPORT: ok

REPORT: Checking shared library generation:
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -DMRTRIX_WINDOWS -mms-bitfields -Wa,-mbig-obj -D_FILE_OFFSET_BITS=64 /tmp/tmpdr0vmvek.cpp -o /tmp/tmpdr0vmvek.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpdr0vmvek.o -shared -Wl,--sort-common,--as-needed -pthread -Wl,--allow-multiple-definition -o test.dll
EXIT: 0
>>


REPORT: ok

REPORT: Detecting pointer size:

COMPILE /tmp/tmp41zi7pfz.cpp:
---

#include <iostream>
int main() {
  std::cout << sizeof(void*);
  return (0);
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -DMRTRIX_WINDOWS -mms-bitfields -Wa,-mbig-obj -D_FILE_OFFSET_BITS=64 /tmp/tmp41zi7pfz.cpp -o /tmp/tmp41zi7pfz.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmp41zi7pfz.o -Wl,--sort-common,--as-needed -pthread -Wl,--allow-multiple-definition -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
8
>>


REPORT: 64 bit

REPORT: Detecting byte order:

REPORT: little-endian

REPORT: Checking for variable-length array support:

COMPILE /tmp/tmprcy6008l.cpp:
---

int main(int argc, char* argv[]) {
  int x[argc];
  return 0;
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -DMRTRIX_WINDOWS -mms-bitfields -Wa,-mbig-obj -D_FILE_OFFSET_BITS=64 -DMRTRIX_WORD64 /tmp/tmprcy6008l.cpp -o /tmp/tmprcy6008l.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmprcy6008l.o -Wl,--sort-common,--as-needed -pthread -Wl,--allow-multiple-definition -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
>>


REPORT: ok

REPORT: Checking for non-POD variable-length array support:

COMPILE /tmp/tmpfsjhmlp_.cpp:
---

#include <string>

class X {
  int x;
  double y;
  std::string s;
};

int main(int argc, char* argv[]) {
  X x[argc];
  return 0;
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -DMRTRIX_WINDOWS -mms-bitfields -Wa,-mbig-obj -D_FILE_OFFSET_BITS=64 -DMRTRIX_WORD64 /tmp/tmpfsjhmlp_.cpp -o /tmp/tmpfsjhmlp_.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpfsjhmlp_.o -Wl,--sort-common,--as-needed -pthread -Wl,--allow-multiple-definition -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
>>


REPORT: ok

REPORT: Checking for ::max_align_t:

COMPILE /tmp/tmp3_fjgqg8.cpp:
---

#include <iostream>
#include <cstddef>
using ::max_align_t;
int main() {
  std::cout << alignof (max_align_t) << " bytes\n";
  return 0;
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -DMRTRIX_WINDOWS -mms-bitfields -Wa,-mbig-obj -D_FILE_OFFSET_BITS=64 -DMRTRIX_WORD64 /tmp/tmp3_fjgqg8.cpp -o /tmp/tmp3_fjgqg8.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmp3_fjgqg8.o -Wl,--sort-common,--as-needed -pthread -Wl,--allow-multiple-definition -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
16 bytes
>>


REPORT: 16 bytes

REPORT: Checking for std::max_align_t:

COMPILE /tmp/tmppnc1w_0_.cpp:
---

#include <iostream>
#include <cstddef>
using std::max_align_t;
int main() {
  std::cout << alignof (max_align_t) << " bytes\n";
  return 0;
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -DMRTRIX_WINDOWS -mms-bitfields -Wa,-mbig-obj -D_FILE_OFFSET_BITS=64 -DMRTRIX_WORD64 /tmp/tmppnc1w_0_.cpp -o /tmp/tmppnc1w_0_.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmppnc1w_0_.o -Wl,--sort-common,--as-needed -pthread -Wl,--allow-multiple-definition -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
16 bytes
>>


REPORT: 16 bytes
EXEC <<
CMD: pkg-config --cflags eigen3
EXIT: 0
STDOUT:
-I/mingw64/include/eigen3
>>


REPORT: Checking for Eigen3 library:

COMPILE /tmp/tmpzs6u4mwl.cpp:
---

#include <cstddef>
#include <Eigen/Core>
#include <iostream>

int main (int argc, char* argv[]) {
  std::cout << EIGEN_WORLD_VERSION << "." << EIGEN_MAJOR_VERSION << "." << EIGEN_MINOR_VERSION << "\n";
  return 0;
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -DMRTRIX_WINDOWS -mms-bitfields -Wa,-mbig-obj -D_FILE_OFFSET_BITS=64 -DMRTRIX_WORD64 -idirafter /mingw64/include/eigen3 /tmp/tmpzs6u4mwl.cpp -o /tmp/tmpzs6u4mwl.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpzs6u4mwl.o -Wl,--sort-common,--as-needed -pthread -Wl,--allow-multiple-definition -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
3.3.7
>>


REPORT: 3.3.7
EXEC <<
CMD: pkg-config --cflags zlib
EXIT: 1
STDERR:
Package zlib was not found in the pkg-config search path.
Perhaps you should add the directory containing `zlib.pc'
to the PKG_CONFIG_PATH environment variable
No package 'zlib' found
>>

error running "pkg-config --cflags zlib"

EXEC <<
CMD: pkg-config --libs zlib
EXIT: 1
STDERR:
Package zlib was not found in the pkg-config search path.
Perhaps you should add the directory containing `zlib.pc'
to the PKG_CONFIG_PATH environment variable
No package 'zlib' found
>>

error running "pkg-config --libs zlib"


REPORT: Checking for zlib compression library:

COMPILE /tmp/tmp6jhscjax.cpp:
---

#include <iostream>
#include <zlib.h>

int main() {
  std::cout << zlibVersion();
  return (0);
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -DMRTRIX_WINDOWS -mms-bitfields -Wa,-mbig-obj -D_FILE_OFFSET_BITS=64 -DMRTRIX_WORD64 /tmp/tmp6jhscjax.cpp -o /tmp/tmp6jhscjax.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmp6jhscjax.o -Wl,--sort-common,--as-needed -pthread -Wl,--allow-multiple-definition -lz -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
1.2.11
>>


REPORT: 1.2.11

REPORT: Checking for "JSON for Modern C++" requirements:

COMPILE /tmp/tmpkint_uo7.cpp:
---

#include "file/json.h"
int main (int argc, char* argv[])
{
  nlohmann::json json;
  json["key"] = "value";
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -DMRTRIX_WINDOWS -mms-bitfields -Wa,-mbig-obj -D_FILE_OFFSET_BITS=64 -DMRTRIX_WORD64 -I/home/huuhu/mrtrix3/core /tmp/tmpkint_uo7.cpp -o /tmp/tmpkint_uo7.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpkint_uo7.o -Wl,--sort-common,--as-needed -pthread -Wl,--allow-multiple-definition -lz -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
>>


REPORT: ok
EXEC <<
CMD: pkg-config --cflags libtiff-4
EXIT: 1
STDERR:
Package libtiff-4 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libtiff-4.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libtiff-4' found
>>

error running "pkg-config --cflags libtiff-4"

EXEC <<
CMD: pkg-config --libs libtiff-4
EXIT: 1
STDERR:
Package libtiff-4 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libtiff-4.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libtiff-4' found
>>

error running "pkg-config --libs libtiff-4"


REPORT: Checking for TIFF library:

COMPILE /tmp/tmpo55s4w__.cpp:
---

#include <iostream>
#include <tiffio.h>

int main() {
  std::cout << TIFFGetVersion();
  return (0);
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -DMRTRIX_WINDOWS -mms-bitfields -Wa,-mbig-obj -D_FILE_OFFSET_BITS=64 -DMRTRIX_WORD64 /tmp/tmpo55s4w__.cpp -o /tmp/tmpo55s4w__.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpo55s4w__.o -Wl,--sort-common,--as-needed -pthread -Wl,--allow-multiple-definition -lz -ltiff -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
LIBTIFF, Version 4.1.0
Copyright (c) 1988-1996 Sam Leffler
Copyright (c) 1991-1996 Silicon Graphics, Inc.
>>


REPORT: LIBTIFF, Version 4.1.0
EXEC <<
CMD: pkg-config --cflags fftw3
EXIT: 1
STDERR:
Package fftw3 was not found in the pkg-config search path.
Perhaps you should add the directory containing `fftw3.pc'
to the PKG_CONFIG_PATH environment variable
No package 'fftw3' found
>>

error running "pkg-config --cflags fftw3"

EXEC <<
CMD: pkg-config --libs fftw3
EXIT: 1
STDERR:
Package fftw3 was not found in the pkg-config search path.
Perhaps you should add the directory containing `fftw3.pc'
to the PKG_CONFIG_PATH environment variable
No package 'fftw3' found
>>

error running "pkg-config --libs fftw3"


REPORT: Checking for FFTW library:

COMPILE /tmp/tmpuck76f19.cpp:
---

#include <iostream>
#include <fftw3.h>

int main() {
  std::cout << fftw_version << "\n";
  return (0);
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -DMRTRIX_WINDOWS -mms-bitfields -Wa,-mbig-obj -D_FILE_OFFSET_BITS=64 -DMRTRIX_WORD64 -DMRTRIX_TIFF_SUPPORT /tmp/tmpuck76f19.cpp -o /tmp/tmpuck76f19.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpuck76f19.o -Wl,--sort-common,--as-needed -pthread -Wl,--allow-multiple-definition -lz -ltiff -lfftw3 -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
fftw-3.3.8-sse2-avx
>>


REPORT: fftw-3.3.8-sse2-avx

REPORT: Checking for Qt moc:
EXEC <<
CMD: moc -v
EXIT: 0
STDOUT:
moc 5.14.1
>>


REPORT: moc (version 5.14.1)

REPORT: Checking for Qt qmake:
EXEC <<
CMD: qmake -v
EXIT: 0
STDOUT:
QMake version 3.1
Using Qt version 5.14.1 in C:/msys64/mingw64/lib
>>


REPORT: qmake (version 5.14.1)

REPORT: Checking for Qt rcc:
EXEC <<
CMD: rcc -v
EXIT: 0
STDOUT:
rcc 5.14.1
>>


REPORT: rcc (version 5.14.1)

REPORT: Checking for Qt:

source file "qt.h":
---
#include <QObject>

class Foo: public QObject {
  Q_OBJECT;
  public:
    Foo();
    ~Foo();
  public slots:
    void setValue(int value);
  signals:
    void valueChanged (int newValue);
  private:
    int value_;
};
---

source file "qt.cpp":
---
#include <iostream>
#include "qt.h"

Foo::Foo() : value_ (42) { connect (this, SIGNAL(valueChanged(int)), this, SLOT(setValue(int))); }

Foo::~Foo() { std::cout << qVersion() << "\n"; }

void Foo::setValue (int value) { value_ = value; }

int main() { Foo f; }
---

project file "qt.pro":
---
CONFIG += c++11
QT += core gui opengl svg
HEADERS += qt.h
SOURCES += qt.cpp
---
EXEC <<
CMD: qmake
EXIT: 0
STDOUT:
Info: creating stash file C:\msys64\tmp\tmp6gyyb0vk\.qmake.stash
STDERR:
C:/msys64/mingw64/share/qt5/mkspecs/common/windows-vulkan.conf:1: Cannot find feature windows_vulkan_sdk
>>


ERROR: unexpected error: [Errno 2] No such file or directory: '/tmp/tmp6gyyb0vk/Makefile.Release'

  See the file 'configure.log' for details. If this doesn't help and you need
  further assistance, please post on the MRtrix3 community forum
  (http://community.mrtrix.org/), and make sure to include the full contents of
  the 'configure.log' file.

I had the vulkan error recently, but I think that’s just a warning – it still seemed to complete successfully. But I haven’t come across the next error about the missing makefile. I’ll look into it when I next get the chance.

Thank you so much for your help!
Best,

Jane

OK, problem fixed and merged to master in this pull request. Try pulling in the latest changes, hopefully that’ll fix the issue:

git pull
./configure
./build

Oh it worked perfectly! Thank you so much for your help!
Van

1 Like