All Projects → AustinBrunkhorst → Cpp Reflection

AustinBrunkhorst / Cpp Reflection

Licence: mit
C++ Reflection Parser / Runtime Skeleton

Programming Languages

reflection
70 projects

Projects that are alternatives of or similar to Cpp Reflection

Cmake Ide
Use Emacs as a C/C++ IDE
Stars: ✭ 661 (+50.23%)
Mutual labels:  cmake, libclang
Gaia
Build powerful pipelines in any programming language.
Stars: ✭ 4,534 (+930.45%)
Mutual labels:  automation, build
C cpp project framework
CMake build system( framework) with kconfig support for C/CPP projects
Stars: ✭ 26 (-94.09%)
Mutual labels:  cmake, build
Arduino Cmake Ng
CMake-Based framework for Arduino platforms
Stars: ✭ 123 (-72.05%)
Mutual labels:  cmake, build
Nake
Magic script-based C# task runner for .NET Core
Stars: ✭ 183 (-58.41%)
Mutual labels:  automation, build
Easyclangcomplete
💥 Robust C/C++ code completion for Sublime Text 3
Stars: ✭ 537 (+22.05%)
Mutual labels:  cmake, libclang
Invoke Build
Build Automation in PowerShell
Stars: ✭ 453 (+2.95%)
Mutual labels:  automation, build
Asynctasks.vim
🚀 Modern Task System for Project Building, Testing and Deploying !!
Stars: ✭ 495 (+12.5%)
Mutual labels:  cmake, build
Zeus
An Electrifying Build System
Stars: ✭ 176 (-60%)
Mutual labels:  automation, build
Pybuilder
Software build automation tool for Python.
Stars: ✭ 1,290 (+193.18%)
Mutual labels:  automation, build
old vespene
DISCONTINUED: a frozen fork will exist forever at mpdehaan/vespene
Stars: ✭ 672 (+52.73%)
Mutual labels:  automation, build
U3d
U3d is a cross-platform set of tools to interact with Unity3D from command line.
Stars: ✭ 309 (-29.77%)
Mutual labels:  automation, build
Mbt
The most flexible build tool for monorepo
Stars: ✭ 184 (-58.18%)
Mutual labels:  automation, build
Opencv Mingw Build
👀 MinGW 32bit and 64bit version of OpenCV compiled on Windows. Including OpenCV 3.3.1, 3.4.1, 3.4.1-x64, 3.4.5, 3.4.6, 3.4.7, 3.4.8-x64, 3.4.9, 4.0.0-alpha-x64, 4.0.0-rc-x64, 4.0.1-x64, 4.1.0, 4.1.0-x64, 4.1.1-x64, 4.5.0-with-contrib
Stars: ✭ 401 (-8.86%)
Mutual labels:  cmake, build
Rules foreign cc
Build rules for interfacing with "foreign" (non-Bazel) build systems (CMake, configure-make, GNU Make, boost, ninja)
Stars: ✭ 418 (-5%)
Mutual labels:  cmake
Cgold
🐋 The Hitchhiker’s Guide to the CMake
Stars: ✭ 428 (-2.73%)
Mutual labels:  cmake
Solopi
SoloPi 自动化测试工具
Stars: ✭ 4,461 (+913.86%)
Mutual labels:  automation
Blt
Acquia's toolset for automating Drupal 8 and 9 development, testing, and deployment.
Stars: ✭ 412 (-6.36%)
Mutual labels:  automation
Smarthome
@skalavala 👍 Nothing But Smarthome Stuff! - By Mahasri Kalavala
Stars: ✭ 437 (-0.68%)
Mutual labels:  automation
Shuffle
Shuffle: A general purpose security automation platform platform. We focus on accessibility for all.
Stars: ✭ 424 (-3.64%)
Mutual labels:  automation

C++ Reflection

Join the chat at https://gitter.im/CPP-Reflection/Lobby

Preface

I worked on a complete reflection pipeline starting in the summer of 2015 for a game project / editor. My intent by creating this repository was to share my experience and how I came about developing it. The response from the community motivated me to make it a tad bit more official by allowing others to consume and build it easily, rather than just giving you code and saying "fill in the pieces".

I created a blog where I talk more in detail about the process and try to share my experiences as best as possible. You can find the blog here -

https://austinbrunkhorst.com/cpp-reflection-part-1/

Building

There are three buildable sections in this repository - Runtime, Parser and Examples. I setup an environment for building using CMake - yes it's insane but it's also awesome so let's just go with it. All examples are assuming you're working from the root of this repository.

Requirements

  • LLVM 3.8.0+ (for libClang)
  • Boost 1.59+
  • A C++11 compliant compiler - I've tested on MSVC 14, G++ 4.8 and Clang++ 3.6.

Runtime

There are no dependencies in the runtime so building is pretty straightforward.

Create a build directory.

mkdir Build && cd Build

Generate a build system using any desired generator in CMake.

cmake -G "<Desired Generator>" ../Source/Runtime

Build - you can use any IDE if applicable to the generator, but you can also just build straight from CMake.

cmake --build . --target MetaRuntime

Parser

There are more moving parts in this because the parser actually has dependencies and builds to an executable. Don't worry though! I'm here to walk you through this.

Install LLVM 3.8 for LibClang

Windows - download the 32 bit or 64 bit pre-built binaries.

Unix based systems - find the appropriate package. On Linux Mint I just did the following.

sudo apt-get install libclang-3.8-dev

The installation should be located in /usr/lib/llvm-3.8

Once installed, set an environment variable LLVM_ROOT to the root of the installation directory. You can skip this step, but an environment variable makes the CMake command simpler.

Install Boost 1.59

This part sucks, but we've gotta do it. Download the sources and build it using these instructions.

Once installed, set an environment variable to BOOST_ROOT like we did for LLVM.

Create a build directory.

mkdir Build && cd Build

Generate a build system using any desired generator in CMake.

cmake -G "<Desired Generator>" ../Source/Parser

If you skipped creating environment variables, you'll have to define variables for resolution in CMake directly - just add these two switches in the command above.

-DLLVM_ROOT=<PATH> -DBOOST_ROOT=<PATH>

Build - you can use any IDE if applicable to the generator, but you can also just build straight from CMake.

cmake --build . --target MetaParser

Examples

You will need to follow the same steps for setting up the dependencies explained in the Parser build instructions.

Just like the other two targets you'll do the following -

Create a build directory.

mkdir Build && cd Build

Generate a build system using any desired generator in CMake.

cmake -G "<Desired Generator>" ../Examples

Build - you can use any IDE if applicable to the generator, but you can also just build straight from CMake.

cmake --build .

Remember to add the extra switches for defining LLVM_ROOT and BOOST_ROOT if you skipped adding them as an environment variable.

All of the examples build to a simple executable that demonstrates the specific features/functionality in use.

I don't have immediate intentions of documenting the interfaces and such with the runtime library, but hopefully the examples cover all parts of the runtime and people can get the whole picture there. My blog posts cover the development process and the reason I made the decisions I did.

Feel free to contact me with any questions or concerns! Also, pull requests are very welcome!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].