Skip to content

Instantly share code, notes, and snippets.

Manuel Binna mbinna

Block or report user

Report or block mbinna

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
mbinna /
Last active Jan 19, 2020
Effective Modern CMake

Effective Modern CMake

Getting Started

For a brief user-level introduction to CMake, watch C++ Weekly, Episode 78, Intro to CMake by Jason Turner. LLVM’s CMake Primer provides a good high-level introduction to the CMake syntax. Go read it now.

After that, watch Mathieu Ropert’s CppCon 2017 talk Using Modern CMake Patterns to Enforce a Good Modular Design (slides). It provides a thorough explanation of what modern CMake is and why it is so much better than “old school” CMake. The modular design ideas in this talk are based on the book [Large-Scale C++ Software Design](

View gist:db95a37a689599c3a3186f76db4c7e59
mbinna /
Last active May 31, 2017
Run Deploymate in an Xcode Run Script Build Phase
# Deploymate Command Line Interface:
if [[ -x "${DEPLOYMATE}" ]]; then
"${DEPLOYMATE}" --cli --target=XXX --forced-exit-code "${PROJECT_FILE_PATH}"
mbinna / .clang-format
Created Feb 18, 2014
Custom .clang-format
View .clang-format
# Reference:
BasedOnStyle: WebKit
AccessModifierOffset: -4
AlignEscapedNewlinesLeft: false
AlignTrailingComments: false
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortFunctionsOnASingleLine: false
AllowShortIfStatementsOnASingleLine: false
mbinna / isRunningTests.c
Last active Dec 18, 2015
Detect if the app was launched in the iOS Simulator to execute the unit tests. Source:
View isRunningTests.c
static BOOL isRunningTests(void) {
NSDictionary *environment = [[NSProcessInfo processInfo] environment];
NSString *injectBundle = environment[@"XCInjectBundle"];
return [[injectBundle pathExtension] isEqualToString:@"octest"];
mbinna / gist:5316890
Created Apr 5, 2013
Stub RestKit network requests in Kiwi with Nocilla
View gist:5316890
#import "MBAEntityFetcher.h"
#import "MBAAPIBaseURL.h"
#import "MBAResponseDescriptorProvider.h"
#import <Kiwi/Kiwi.h>
#import <Nocilla/LSNocilla.h>
#import <RestKit/RestKit.h>
#import <RestKit/Testing.h>
mbinna /
Created Mar 29, 2013
Invoke appledoc in a run script build phase in Xcode
/usr/local/bin/appledoc \
--templates "/usr/local/opt/appledoc/Templates" \
--project-name "${PROJECT_NAME}" \
--project-company "Manuel Binna" \
--company-id "de.binna" \
--output "Documentation" \
--logformat xcode \
mbinna /
Last active Oct 25, 2017
Run Xcode Application Tests from the command line
# Launch application using ios-sim and set up environment to inject test bundle into application
# Source:
environment_args="--setenv DYLD_INSERT_LIBRARIES=/../../Library/PrivateFrameworks/IDEBundleInjection.framework/IDEBundleInjection --setenv XCInjectBundle=$test_bundle_path --setenv XCInjectBundleInto=$TEST_HOST"
ios-sim launch $(dirname $TEST_HOST) $environment_args --args -SenTest All $test_bundle_path
echo "Finished running tests with ios-sim"
mbinna /
Created Dec 4, 2012
Clear CocoaPods cache, re-download and re-install all pods
#!/usr/bin/env bash
rm -rf "${HOME}/Library/Caches/CocoaPods"
rm -rf "`pwd`/Pods/"
pod update
mbinna /
Last active Oct 13, 2015
Invoke mogenerator during Xcode build
# The approach used here is adopted from the following source:
# Since version 1.27, mogenerator automatically uses the current version of the data model
# Homebrew stores mogenerator in /usr/local/bin
You can’t perform that action at this time.