Build on Mac OS El Capitan (QT problem?)

Hi Mrtrix Experts,

I am trying to build Mrtrix on my Mac and everything was going fine until I tried ./configure while in MRTRIX3 folder. Something is wrong with my QT application even though installation via MacPort seemed okay.

Here are my commands in .bash_profile:

export PATH=/Users/ElijahMak/Documents/MATLAB_R2011a.app/bin:$PATH
export PATH=/Users/ElijahMak/QT/5.7/clang_64/bin:$PATH
export EIGEN_CFLAGS="-isystem /Users/ElijahMak/Documents/eigen/"

# MacPorts Installer addition on 2016-07-25_at_07:22:30: adding an appropriate PATH variable for use with MacPorts.
export PATH="/opt/local/bin:/opt/local/sbin:$PATH"
# Finished adapting your PATH environment variable for use with MacPorts.
PATH=/Users/ElijahMak/mrtrix3/release/bin:/Users/ElijahMak/mrtrix3/scripts:$PATH

And here are details for the configure log file. Any help will be greatly appreciated! :slight_smile:

REPORT: 
MRtrix build type requested:

REPORT: release

REPORT: 

REPORT: Detecting OS: darwin
EXEC <<
CMD: sw_vers -productVersion
EXIT: 0
STDOUT:
10.11.2
>>


REPORT: OS X deployment target: 10.11

REPORT: Checking for C++11 compliant compiler [clang++]:
EXEC <<
CMD: clang++ -dumpversion
EXIT: 0
STDOUT:
4.2.1
>>


REPORT: 4.2.1

COMPILE /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmpizet7_ng.cpp:
---

struct Base {
    Base (int);
};
struct Derived : Base {
    using Base::Base;
};

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

---
EXEC <<
CMD: clang++ -c -std=c++11 -DMRTRIX_MACOSX -fPIC -mmacosx-version-min=10.11 /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmpizet7_ng.cpp -o /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmpizet7_ng.o
EXIT: 0
>>

EXEC <<
CMD: clang++ /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmpizet7_ng.o -mmacosx-version-min=10.11 -o a.out
EXIT: 0
>>

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


REPORT:  - tested ok

REPORT: Detecting pointer size:

COMPILE /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmp45c1c6o8.cpp:
---

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

---
EXEC <<
CMD: clang++ -c -std=c++11 -DMRTRIX_MACOSX -fPIC -mmacosx-version-min=10.11 /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmp45c1c6o8.cpp -o /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmp45c1c6o8.o
EXIT: 0
>>

EXEC <<
CMD: clang++ /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmp45c1c6o8.o -mmacosx-version-min=10.11 -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 /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmpem91xi49.cpp:
---


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

---
EXEC <<
CMD: clang++ -c -std=c++11 -DMRTRIX_MACOSX -fPIC -mmacosx-version-min=10.11 -DMRTRIX_WORD64 /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmpem91xi49.cpp -o /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmpem91xi49.o
EXIT: 0
>>

EXEC <<
CMD: clang++ /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmpem91xi49.o -mmacosx-version-min=10.11 -o a.out
EXIT: 0
>>

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


REPORT: yes

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

COMPILE /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmp7f703o_e.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: clang++ -c -std=c++11 -DMRTRIX_MACOSX -fPIC -mmacosx-version-min=10.11 -DMRTRIX_WORD64 /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmp7f703o_e.cpp -o /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmp7f703o_e.o
EXIT: 1
STDERR:
/var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmp7f703o_e.cpp:11:6: error: variable length array of non-POD element type 'X'
  X x[argc];
     ^
1 error generated.
>>

error deleting temporary file "/var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmp7f703o_e.o": No such file or directory
REPORT: no

REPORT: Checking for zlib compression library:

COMPILE /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmps6z3pwur.cpp:
---

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

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

---
EXEC <<
CMD: clang++ -c -std=c++11 -DMRTRIX_MACOSX -fPIC -mmacosx-version-min=10.11 -DMRTRIX_WORD64 -DMRTRIX_NO_NON_POD_VLA /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmps6z3pwur.cpp -o /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmps6z3pwur.o
EXIT: 0
>>

EXEC <<
CMD: clang++ /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmps6z3pwur.o -mmacosx-version-min=10.11 -lz -o a.out
EXIT: 0
>>

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


REPORT: 1.2.5

REPORT: Checking for Eigen 3 library:

COMPILE /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmp5id1qdhx.cpp:
---

#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: clang++ -c -std=c++11 -DMRTRIX_MACOSX -fPIC -mmacosx-version-min=10.11 -DMRTRIX_WORD64 -DMRTRIX_NO_NON_POD_VLA -isystem /Users/ElijahMak/Documents/eigen/ /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmp5id1qdhx.cpp -o /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmp5id1qdhx.o
EXIT: 0
>>

EXEC <<
CMD: clang++ /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmp5id1qdhx.o -mmacosx-version-min=10.11 -lz -o a.out
EXIT: 0
>>

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


REPORT: 3.2.9

REPORT: Checking shared library generation:
EXEC <<
CMD: clang++ -c -std=c++11 -DMRTRIX_MACOSX -fPIC -mmacosx-version-min=10.11 -DMRTRIX_WORD64 -DMRTRIX_NO_NON_POD_VLA -isystem /Users/ElijahMak/Documents/eigen/ /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmp_0h0jyoy.cpp -o /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmp_0h0jyoy.o
EXIT: 0
>>

EXEC <<
CMD: clang++ /var/folders/qh/307k72vx5zz54nfngsbzc5lm0000gn/T/tmp_0h0jyoy.o -dynamiclib -install_name @rpath/LIBNAME -mmacosx-version-min=10.11 -mmacosx-version-min=10.11 -lz -o libtest.dylib
EXIT: 0
>>


REPORT: yes

REPORT: Checking for Qt moc:
EXEC <<
CMD: moc -v
EXIT: 1
STDERR:
Qt Meta Object Compiler version 63 (Qt 4.8.7)
>>


REPORT: moc (version 4.8.7)

REPORT: Checking for Qt qmake:
EXEC <<
CMD: qmake -v
EXIT: 0
STDOUT:
QMake version 2.01a
Using Qt version 4.8.7 in /Users/ElijahMak/anaconda/lib
>>


REPORT: qmake (version 4.8.7)

REPORT: Checking for Qt rcc:
EXEC <<
CMD: rcc -v
EXIT: 1
STDERR:
Qt Resource Compiler version 4.8.7
>>


REPORT: rcc (version 4.8.7)

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
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.11
---
EXEC <<
CMD: qmake
EXIT: 0
>>

EXEC <<
CMD: moc qt.h -o qt_moc.cpp
EXIT: 0
>>

EXEC <<
CMD: clang++ -c -std=c++11 -DMRTRIX_MACOSX -fPIC -mmacosx-version-min=10.11 -DMRTRIX_WORD64 -DMRTRIX_NO_NON_POD_VLA -isystem /Users/ElijahMak/Documents/eigen/ -pipe -O2 -arch x86_64 -Xarch_x86_64 -mmacosx-version-min=10.5 -Wall -W -DQT_NO_DEBUG -DQT_SVG_LIB -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -isystem /Users/ElijahMak/anaconda/mkspecs/macx-g++ -isystem /Users/ElijahMak/anaconda/include/QtCore -isystem /Users/ElijahMak/anaconda/include/QtGui -isystem /Users/ElijahMak/anaconda/include/QtOpenGL -isystem /Users/ElijahMak/anaconda/include/QtSvg -isystem /Users/ElijahMak/anaconda/include -isystem /System/Library/Frameworks/OpenGL.framework/Headers -isystem /System/Library/Frameworks/AGL.framework/Headers/ qt.cpp -o qt.o
EXIT: 1
STDERR:
In file included from qt.cpp:2:
In file included from ./qt.h:1:
In file included from /Users/ElijahMak/anaconda/include/QtCore/QObject:1:
In file included from /Users/ElijahMak/anaconda/include/QtCore/qobject.h:50:
/Users/ElijahMak/anaconda/include/QtCore/qlist.h:55:10: fatal error: 'initializer_list' file not found
#include <initializer_list>
         ^
1 error generated.
>>


ERROR: error compiling Qt application!

  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.

Hi MRtrix Experts,

I have managed to resolve the issue. When I tried to build it, everything went fine and I was able to load MRVIEW. But I noticed three warnings:

(415/440) [LB] release/bin/voxel2fixel

clang++ -c -std=c++11 -DMRTRIX_MACOSX -fPIC -mmacosx-version-min=10.11 -DMRTRIX_WORD64 -DMRTRIX_NO_NON_POD_VLA -isystem /Users/ElijahMak/Documents/eigen/ -Wall -O2 -DNDEBUG -Isrc -Icmd -I./lib -Icmd -isystem /Users/ElijahMak/Documents/eigen/ src/dwi/tractography/seeding/seeding.cpp -o release/src/dwi/tractography/seeding/seeding.o:

In file included from src/dwi/tractography/seeding/seeding.cpp:17:
In file included from src/dwi/tractography/seeding/seeding.h:22:
src/dwi/tractography/seeding/dynamic.h:82:23: warning: braces around scalar initializer [-Wbraced-scalar-init]
            updating (ATOMIC_FLAG_INIT),
                      ^~~~~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/atomic:1779:26: note: expanded from macro 'ATOMIC_FLAG_INIT'
#define ATOMIC_FLAG_INIT {false}
                         ^~~~~~~
In file included from src/dwi/tractography/seeding/seeding.cpp:17:
In file included from src/dwi/tractography/seeding/seeding.h:22:
src/dwi/tractography/seeding/dynamic.h:93:23: warning: braces around scalar initializer [-Wbraced-scalar-init]
            updating (ATOMIC_FLAG_INIT),
                      ^~~~~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/atomic:1779:26: note: expanded from macro 'ATOMIC_FLAG_INIT'
#define ATOMIC_FLAG_INIT {false}
                         ^~~~~~~
In file included from src/dwi/tractography/seeding/seeding.cpp:17:
In file included from src/dwi/tractography/seeding/seeding.h:22:
src/dwi/tractography/seeding/dynamic.h:104:23: warning: braces around scalar initializer [-Wbraced-scalar-init]
            updating (ATOMIC_FLAG_INIT),
                      ^~~~~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/atomic:1779:26: note: expanded from macro 'ATOMIC_FLAG_INIT'
#define ATOMIC_FLAG_INIT {false}
                         ^~~~~~~
3 warnings generated.

Should this be of any concern?

Thanks again!

These warnings can be safely ignored.

I’m having the same problem with “fatal error: ‘initializer_list’ file not found”, how did you manage to fix it?

I’m not sure what @ElijahMak did to fix their original issue, but looking through the logs, one issue was definitely trying to use Qt 4.8.7 - we need Qt > 5.1 to access OpenGL 3.3 functionality in MRView. Using a more recent version of Qt might be enough to avoid the issue?