Hintzelab / MABE

Modular Agent Based Evolution Framework
Other
77 stars 24 forks source link

Feature cmake migration #337

Closed JorySchossau closed 4 years ago

JorySchossau commented 4 years ago

This is an overhaul of the MABE build process to streamline the build, add better and more flexible support for project files, add support for linking arbitrary libraries, and also remove python as a build system dependency because so many people had issues with it. This also adds a new mbuild interface (which has its own repo). Now modules are actually modular and simply moving their folders into and out of MABE is all that is required to build with them, despite any special dependencies they may have.

Overview of changes:

The minimum workflow to get a compiled MABE, on Windows for instance, is now:

This also supports MSYS2 with gcc or clang on windows as before (I can't install the new MS Terminal, so I can't test that, but it should be fine). On MSYS2 it will default to using GCC, then Clang, then Visual Studio in that order of availability, unless you force it to use a particular one.

Known Issues:

JorySchossau commented 4 years ago

After merge of setAllInputs feature, I'll need to rebase again to fix conflicts. Just an FYI if you're reviewing this.

JorySchossau commented 4 years ago

@Shalmezad We'd appreciate any comments if you're still working with MABE these days and have time to try this out.

Shalmezad commented 4 years ago

Will have to dig a bit deeper later. In particular want to try out the new mbuild items. The instructions you provided worked fine. Only issue I have right now is having the executables (lin_build, osx_build, and win_build.exe) in src/ as it's very easy to open them by accident when going through the source code. Would probably be best to move them to a separate directory (tools/ perhaps?)

JorySchossau commented 4 years ago

The instructions you provided worked fine.

Glad to hear it.

Only issue I have right now is having the executables (lin_build, osx_build, and win_build.exe) in src/ as it's very easy to open them by accident when going through the source code. Would probably be best to move them to a separate directory (tools/ perhaps?)

Good point. Will brainstorm given we also have a pytools dir. Thanks.

JorySchossau commented 4 years ago
cliff-bohm commented 4 years ago

A quick note on sh setup.cmd if there is a space (' ') in the pathname, sh setup.cmd fails to find the destination folder.

JorySchossau commented 4 years ago

A quick note on sh setup.cmd if there is a space (' ') in the pathname, sh setup.cmd fails to find the destination folder.

Thanks! Fixed in b41a801a74d5231b4dd1648df69ef7d6aa6e9c0c

JorySchossau commented 4 years ago

Warning of missing modules.txt should be more concise.

JorySchossau commented 4 years ago

Executable permissions are missing if repo is copied between operating systems. We should add a chmod into the setup script.