Skip to content

Instantly share code, notes, and snippets.

View mbinna's full-sized avatar

Manuel Binna mbinna

View GitHub Profile
@mbinna
mbinna / effective_modern_cmake.md
Last active April 15, 2024 06:41
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](https://www.amazon.de/Large-Scale-Soft

@mbinna
mbinna / gist:db95a37a689599c3a3186f76db4c7e59
Created September 15, 2017 20:32
Etherum Account (Rinkeby)
0xfc189b1494157898696e1331008e384a7FEeD978
@mbinna
mbinna / run_deploymate.sh
Last active May 31, 2017 08:35
Run Deploymate in an Xcode Run Script Build Phase
# Deploymate Command Line Interface: http://www.deploymateapp.com/kb/cli/
#
DEPLOYMATE="/Applications/Deploymate.app/Contents/MacOS/Deploymate"
if [[ -x "${DEPLOYMATE}" ]]; then
"${DEPLOYMATE}" --cli --target=XXX --forced-exit-code "${PROJECT_FILE_PATH}"
fi
@mbinna
mbinna / .clang-format
Created February 18, 2014 12:43
Custom .clang-format
# Reference: http://clang.llvm.org/docs/ClangFormatStyleOptions.html
BasedOnStyle: WebKit
AccessModifierOffset: -4
AlignEscapedNewlinesLeft: false
AlignTrailingComments: false
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortFunctionsOnASingleLine: false
AllowShortIfStatementsOnASingleLine: false
@mbinna
mbinna / isRunningTests.c
Last active December 18, 2015 07:00
Detect if the app was launched in the iOS Simulator to execute the unit tests. Source: http://www.objc.io/issue-1/testing-view-controllers.html
static BOOL isRunningTests(void) {
NSDictionary *environment = [[NSProcessInfo processInfo] environment];
NSString *injectBundle = environment[@"XCInjectBundle"];
return [[injectBundle pathExtension] isEqualToString:@"octest"];
}
@mbinna
mbinna / gist:5316890
Created April 5, 2013 05:36
Stub RestKit network requests in Kiwi with Nocilla
#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
mbinna / appledoc.sh
Created March 29, 2013 18:33
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
mbinna / RunUnitTests.sh
Last active October 25, 2017 12:59
Run Xcode Application Tests from the command line
#!/bin/sh
# Launch application using ios-sim and set up environment to inject test bundle into application
# Source: http://stackoverflow.com/a/12682617/504494
if [ "$RUN_APPLICATION_TESTS_WITH_IOS_SIM" = "YES" ]; then
test_bundle_path="$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.$WRAPPER_EXTENSION"
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
mbinna / podforceupdate.sh
Created December 4, 2012 09:43
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
mbinna / mogenerator.sh
Last active October 13, 2015 03:58
Invoke mogenerator during Xcode build
# The approach used here is adopted from the following source:
# http://nsscreencast.com/episodes/12-importing-into-core-data
#
# Since version 1.27, mogenerator automatically uses the current version of the data model
MODELS_DIR="MyModels"
DATA_MODEL="${MODELS_DIR}/MOPIncrementalStoreModel.xcdatamodeld"
# Homebrew stores mogenerator in /usr/local/bin
PATH=/usr/local/bin:${PATH}