Note, I was able to compile on my Windows machine. I don't need to use my mac but I was hoping to use it as an at-home development machine. It's not urgent. I'm only just learning C++ but maybe I can help get BCI2000 working on macs.

First, a CMake error.
Using OSX 10.7 and CMake 2.8.11.2 and the BCI2000 source code updated from SVN just now (Revision: 4522).

Sorry, I'm not good enough with CMake to fix this in the CMake files.
If I use cmake-gui and uncheck the BUILD_TOOLS option then I can configure and generate successfully for either XCode or Unix Makefiles.

I used those tools to create ../src/custom/EEGfMRISignalProcessing and one of its filters GradArtRemoval
I then removed the intentional errors from PipeDefinition.cpp and GradArtRemoval.cpp
I then redid CMake's Build and Generate.

Chadwicks-MacBook-Air:build cboulay$ pwd
/Users/cboulay/Documents/bci2000/build
Chadwicks-MacBook-Air:build cboulay$ make EEGfMRISignalProcessing
[ 0%] Building CXX object CMakeFiles/frameworks/CoreLib/CMakeFiles/BCI2000FrameworkCore.dir/Users/cboulay/Documents/bci2000/src/shared/filters/GenericFilter.cpp.o
In file included from /Users/cboulay/Documents/bci2000/src/shared/types/SignalProperties.h:33,
from /Users/cboulay/Documents/bci2000/src/shared/utils/MeasurementUnits.h:30,
from /Users/cboulay/Documents/bci2000/src/shared/accessors/ParamRef.h:36,
from /Users/cboulay/Documents/bci2000/src/shared/accessors/Environment.h:41,
from /Users/cboulay/Documents/bci2000/src/shared/filters/GenericFilter.h:34,
from /Users/cboulay/Documents/bci2000/src/shared/filters/GenericFilter.cpp:29:
/Users/cboulay/Documents/bci2000/src/shared/types/ValueList.h: In member function ‘int ValueList<T>::Size() const’:
/Users/cboulay/Documents/bci2000/src/shared/types/ValueList.h:37: error: there are no arguments to ‘size’ that depend on a template parameter, so a declaration of ‘size’ must be available
/Users/cboulay/Documents/bci2000/src/shared/types/ValueList.h:37: error: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
/Users/cboulay/Documents/bci2000/src/shared/types/ValueList.h: In member function ‘bool ValueList<T>::Empty() const’:
/Users/cboulay/Documents/bci2000/src/shared/types/ValueList.h:38: error: there are no arguments to ‘empty’ that depend on a template parameter, so a declaration of ‘empty’ must be available
make[3]: *** [CMakeFiles/frameworks/CoreLib/CMakeFiles/BCI2000FrameworkCore.dir/Users/cboulay/Documents/bci2000/src/shared/filters/GenericFilter.cpp.o] Error 1
make[2]: *** [CMakeFiles/frameworks/CoreLib/CMakeFiles/BCI2000FrameworkCore.dir/all] Error 2
make[1]: *** [CMakeFiles/custom/EEGfMRISignalProcessing/CMakeFiles/EEGfMRISignalProcessing.dir/rule] Error 2
make: *** [EEGfMRISignalProcessing] Error 2

So I edited those lines in /src/shared/types/ValueList.h replacing size() and empty() with this->size() and this->empty(). Then I got a little further in the compile.

There was a common error that 'foo' is not a member of 'std'. This is because both Xcode and the gcc that come with OSX default to using an older version of the standard library. One option is to simply add

to src/shared/bcistream/BCIException.h . However, this is not the only std-related error so the better option is probably to tell your compiler to use the new library.

If using Xcode, click on the BCI2000 project, then in the Build Settings scroll down to Apple LLVM compiler - Language. In that section change C++ Language Dialect to C++11 and change C++ Standard Library to libc++.
That gets me further but I'm then confronted with errors I don't understand.

If not using Xcode, but using Clang, first you'll have to download the Xcode command line tools from the Xcode>Preferences>Downloads window. You'll also have to add the following to BCI2000/build/CMakeLists.txt

If not using Xcode and using gcc, first get the latest gcc following these instructions [link]http://www.ficksworkshop.com/blog/14-co ... gcc-on-mac[/link].
For all versions of gcc I tried, I could not set the CMAKE_CXX_FLAGS -stdlin=libc++ (the other flags worked). I think that flag is not necessary with gcc, however, I once again had to edit BCIException.h as above.
Once I did that, the compile went a little further but stopped at

thanks for describing your experiences, and suggesting fixes.
The basic problem we are currently having wrt cross-platform compatibility is that MSVC is still our main development platform due to the fact that most hardware APIs come with .lib files for MSVC.
Unfortunately, MSVC does not implement the C++ standard as strictly as gcc does, so it happens quite often that new code is broken on gcc until tested there.

Linking to dynamic libraries has been changed such that we do not depend on .lib files any more. This is currently in beta testing, so we will be able to switch to MinGW on Windows as our main development platform after the imminent 3.06 release. This will likely improve cross-platform compatibility in future versions of BCI2000.

Hi Chad,
I've been recently working on getting BCI2000 (and my custom modules) to build on OSX, running 10.8.4.
I've been able to successfully get revision 4445 to build along with my custom ADC module (with make, not XCode). I haven't had any luck with any newer revisions.

By the way, since i am OSX 10.9 Mavericks, I have to use Qt 5.2 + CLANG LLVM. I get the same errors whether I use XCode or make. I tried changing the standard library (because that helped in the past) to no effect.