All Projects → jerrymarino → Xcodecompilationdatabase

jerrymarino / Xcodecompilationdatabase

Generate a Compilation Database from Xcode's build log - nothing more :).

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to Xcodecompilationdatabase

Moderncppci
This is an example of doing a Modern C++ project with CI
Stars: ✭ 109 (+289.29%)
Mutual labels:  clang, xcode
Hmap
hmap is a command line tool written in Swift to work with Clang header maps produced by Xcode.
Stars: ✭ 110 (+292.86%)
Mutual labels:  clang, xcode
Ci helloworld
A simple example of how to setup a complete CI environment for C and C++
Stars: ✭ 357 (+1175%)
Mutual labels:  clang, xcode
Fapanels
FAPanels - Swift
Stars: ✭ 850 (+2935.71%)
Mutual labels:  xcode
U17
精仿有妖气漫画(Swift5)
Stars: ✭ 853 (+2946.43%)
Mutual labels:  xcode
Swiftinfo
📊 Extract and analyze the evolution of an iOS app's code.
Stars: ✭ 880 (+3042.86%)
Mutual labels:  xcode
Mvvm C Templates
Templates for MVVM-C architecture
Stars: ✭ 27 (-3.57%)
Mutual labels:  xcode
Clif
Binding generator to wrap C++ for Python using LLVM.
Stars: ✭ 845 (+2917.86%)
Mutual labels:  clang
Gitversioningonxcode
Pretty Xcode Git versioning for iOS & macOS applications
Stars: ✭ 15 (-46.43%)
Mutual labels:  xcode
Jazzy
Both Swift and Objective-C projects are supported.
Stars: ✭ 7,078 (+25178.57%)
Mutual labels:  xcode
Streetmusicmap
StreetMusicMap is a collab line up of street music performers from all over the world.
Stars: ✭ 13 (-53.57%)
Mutual labels:  xcode
Agalertviewwithprogressbar
Stars: ✭ 9 (-67.86%)
Mutual labels:  xcode
Xcode Starter Pack
My personal default xcconfig files and whatnot for a new project
Stars: ✭ 15 (-46.43%)
Mutual labels:  xcode
Irony Mode
A C/C++ minor mode for Emacs powered by libclang
Stars: ✭ 851 (+2939.29%)
Mutual labels:  clang
Quiver
Validation, searching and filtering made easy for swift.
Stars: ✭ 27 (-3.57%)
Mutual labels:  xcode
Xcodeeditor
An API for manipulating Xcode project files.
Stars: ✭ 851 (+2939.29%)
Mutual labels:  xcode
Refresher
DEPRECATED: Pull to refresh in Swift
Stars: ✭ 885 (+3060.71%)
Mutual labels:  xcode
Swiftui Grid
🚀 SwiftUI Grid layout with custom styles
Stars: ✭ 872 (+3014.29%)
Mutual labels:  xcode
Drl Theme Manager
Xcode File Template to generate theme manager for Swift 3+
Stars: ✭ 12 (-57.14%)
Mutual labels:  xcode
Xcbt
⌛️xcbt shows Xcode build time of a specified project.
Stars: ✭ 14 (-50%)
Mutual labels:  xcode

Xcode Compilation Database

Generate a Compilation Database from Xcode's build log - nothing more :).

Context

Compilation Database is a file format for storing compile commands. Program language tooling needs a Compilation Databases as input in order to setup the compiler stack; canonical uses of this format are LibTooling and clang-c.

This program is mainly used to generate a Swift Compilation Database for usage in iCompleteMe, as it requires compile_commands.json to determine how to setup the Swift compiler for code completion.

Usage

First, build and install. Optionally, use the install script:

./install.sh

tee build output of a clean build to a log, and pass the result to XCCompilationDB.

xcodebuild .... | tee /path/to/last_build.log
XCCompilationDB /path/to/last_build.log

It outputs compile_commands.json to the root of the CWD.

Notes on unstructured log parsing

There are several ways to extract this information from Xcode. XcodeCompilationDatabase is built on Xcode's unstructured logs for simplicity. Given the general stability of Xcode's log format, this approach should be somewhat maintainable.

All known approaches are less than ideal, including this one. Ideally Xcode and SwiftPM would stream a parsable log containing tool invocations, and standard error and standard out, similar to how the Swift driver does.

Alternatives

There are several other implementations of this on the internet, none of which are known to have Swift support and work in this capacity.

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].