-
Notifications
You must be signed in to change notification settings - Fork 392
Dev Index
Here lies information to help developers get their systems up and running quickly.
Could put lots of information in here, but more likely just links. Provide a basic workflow for Windows (what client?), including branches and pull requests. Maybe a couple what-ifs (i.e., "I made changes in my local develop branch, what now?" -- stash)
CMake (get it from ...here...)
Per operating system.
Native for developers. Cross-platform GCC for testing/packaging.
General Compiler Option Notes:
- Enable C++11 language support
- Disable non-standard extensions
- Disable non-serious warnings until more serious ones are fixed
- GCC 4.8.x or later (4.7.x may work)
- Clang 3.3.x or later: Better messages, faster compiles than GCC, builds may run a bit slower than GCC
- Clang 3.3.x or later
- Visual C++:
- Visual C++ 2012 and earlier are not suitable for EnergyPlus due to the use of C++11 features that those compilers don't support
- Visual C++ 2013:
- Generally works fine but C++11 compliance is imperfect causing some limits with ObjexxFCL functionality and requires some
#ifdef
style work-arounds - Update 2 (mid-May 2014 release) fixes some bugs and allows us to remove some ugly/slow work-arounds: Please install Update 2
- Installing the latest update is recommended
- Generally works fine but C++11 compliance is imperfect causing some limits with ObjexxFCL functionality and requires some
- Visual C++ 2015:
- Seems to work fine but possibly some mild performance regressions for EnergyPlus release builds
- Improved C++11 support will be helpful when we set this as the minimum supported Visual C++ version
- ObjexxFCL Print unit test update is available in #5204 to handle a minor issue (change to formatting of "infinite" floating point values)
- This compiler breaks Intel C++ 15 (and probably earlier) but works with Intel C++ 16
- Intel C++:
- This is a very slow compiler so it may not be ideal for day-to-day development
- Intel C++ generally gives the best optimized performance of EnergyPlus and the difference for some cases is dramatic
- Intel C++ 14.0.2 could build the EnergyPlus debug build but the release build failed with ICEs on a few files
- Intel C++ 14.0.3 or later work well for EnergyPlus
- Intel C++ 15.0 seems to work fine: small numerical differences compared to 14.0 seen with release build
- Installing Visual C++ 2015 breaks Intel C++ 15 (and probably earlier)
- Intel C++ 16.0 has a bug that interferes with the ObjexxFCL formatted i/o system but a work-around is available in #5204
- MinGW GCC:
- Suggest 64-bit packages from MinGW-w64
- MinGW GCC 4.8.x or later seem to work fine
- MinGW GCC 4.9.1 appears to be working well
- MinGW GCC 5.1.0 is broken and should be avoided
- MinGW GCC 5.2.0 appears to be working well. Due to ABI changes the gtest libraries need to be rebuilt when switching to 5.2.0.
Note gtest libraries should be rebuilt when updating to new compiler releases to assure binary compatibility
There are two classifications of tests: self-testing, and regression testing. Self-testing refers to tests that are completed for a single build. This includes unit tests on the code, and reverse-design-day testing for initialization bugs. Regression testing refers to tests that compare two different builds. This includes a regression suite of input files, and a comparison of all outputs.
How to test the code yourself before doing a pull request.
Code is tested once a pull request is issued.
Code is tested nightly.