c2ffi
CMake
c2ffi | CMake | |
---|---|---|
5 | 32 | |
221 | 6,459 | |
- | 1.3% | |
6.3 | 10.0 | |
20 days ago | about 21 hours ago | |
C++ | C | |
GNU Lesser General Public License v3.0 only | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
c2ffi
-
Pair Your Compilers at the ABI Café
Some Common Lisp FFIs have opted to coax this information out of the compiler. https://github.com/rpav/c2ffi is a C++ tool that links to libclang-cpp and literally outputs JSON with sizes and alignments. (It is then used by https://github.com/rpav/cl-autowrap to autogenerate a Lisp wrapper.) The older CFFI Groveller [1] works by generating C code which is compiled by the system C compiler (e.g. GCC or Clang) and, when executed, prints Lisp code that contains resolved values of constants, sizes, alignments, etc.
[1] https://cffi.common-lisp.dev/manual/html_node/The-Groveller....
-
sketch, sdl2, c2ffi on M1 Mac?
Quickloading :sketch or :sdl2 wants the c2ffi library which seems to be available on neither Quicklisp nor Homebrew. Downloading that library from source and following the build instructions (and several alternative variants found by Googling ) leads to errors like:
-
C Isn't a Programming Language Anymore
> C compiler based tool that outputs DWARF or DWARF-like debug output that actually lays out everything
That sounds like C2FFI: https://github.com/rpav/c2ffi
The only language ecosystem where I've seen it used is Common Lisp. But it emits plain JSON and depends only on LLVM (albeit a specific version thereof), and I don't see any reason why you couldn't build e.g. a Python auto-binding library on top of it.
-
Alternative to ECL?
There is the cl-autowrap that can generate lisp packages from C header filesc- I am unsure if it sticks to ANSI C or goes beyond. It inturn depends on c2ffi for the first time around.
-
Installing c2ffi on Ubuntu
git clone https://github.com/rpav/c2ffi git checkout -b llvm-11.0.0 refs/remotes/origin/llvm-11.0.0 cd build cmake .. # -DBUILD_CONFIG=Release LIBRARY_PATH=/usr/lib/llvm-11/lib/ make # -j8 sudo checkinstall
CMake
-
Installer script for CMake, Ninja, and Meson
I thought I would share my custom installer script for the latest GitHub versions of CMake, Ninja, and Meson.
-
CMake can't find glut
The same thing probably applies if you use the FindGlut.cmake module which is documented here: https://cmake.org/cmake/help/latest/module/FindGLUT.html
-
FFmpeg Build Script that uses API calls to get the latest versions of each package + extra modules
building cmake - version 3.26.3 ==================================== Downloading https://github.com/kitware/cmake/archive/refs/tags/v3.26.3.tar.gz as cmake-3.26.3.tar.gz Download Completed File extracted: cmake-3.26.3.tar.gz $ ./configure --prefix=/root/ffmpeg-build-script/workspace --parallel=40 --enable-ccache -- -DCMAKE_USE_OPENSSL=OFF $ make -j 40
-
I can't run my c++ project having Python.h header using cmake in Windows
find_package(Python3 ...) will look for a file FindPython3.cmake shipped with CMake. I urge you to try to go over its contents to get an idea of what it does underneath.
-
using a library from a github repository in cmake project
The file FindSomePKG.cmake (module approach) is supposed to be written either by you (you write it manually and put in a cmake subdirectory in your git repo) or it's an official package file shipped along with CMake, e.g FindOpenSSL.cmake with documentation here.
- Install CMake on Windows
-
Install MariaDB from Source Code on Ubuntu
sudo apt-get install build-essential libncurses5-dev gnutls-dev bison zlib1g-dev ccache libssl-dev # Get cmake # Downloaded under ~/ wget https://github.com/Kitware/CMake/releases/download/v3.25.2/cmake-3.25.2.tar.gz cd cmake-3.25.2 ~/cmake-3.25.2 $ ./bootstrap ~/cmake-3.25.2 $ make ~/cmake-3.25.2 $ sudo make install
-
Adding “invariant” clauses to C++ via GCC plugin to enable Design-by-Contract
Note that `assert`s are disabled if you define the macro `NDEBUG`, e.g. https://godbolt.org/z/hMWo8KM7q
CMake adds these flags to release builds: https://github.com/Kitware/CMake/blob/e1eacbe2c522a8bf9a82af...
Would be nice to have a non-macro solution for controlling behavior at configure time, but the `NDEBUG` macro is basically already your `DEBUG` constexpr.
-
CLion 2022.3 Released!
It's open-source. It might get merged in!
-
Couchbase Node SDK on Docker
FROM node:16 WORKDIR /cmake COPY cmake-3.25.0-rc4-linux-x86_64.sh ./ # OR # RUN apt update && apt install -y g++ wget bash # RUN wget https://github.com/Kitware/CMake/releases/download/v3.25.0-rc4/cmake-3.25.0-rc4-linux-x86_64.sh RUN ./cmake-3.25.0-rc4-linux-x86_64.sh --skip-license && rm cmake-3.25.0-rc4-linux-x86_64.sh ENV PATH="$PATH:/cmake/bin" WORKDIR /app RUN npm i [email protected] COPY package.json . COPY package-lock.json . RUN npm --verbose i COPY . . RUN npm --verbose run build
What are some alternatives?
cl-autowrap - (c-include "file.h") => complete FFI wrapper
meson - The Meson Build System
c-mera - Next-level syntax for C-like languages :)
gcc
mal - mal - Make a Lisp
ninja - a small build system with a focus on speed
chibi-scheme - Official chibi-scheme repository
awesome-bazel - A curated list of Bazel rules, tooling and resources.
cl-sdl2-image - SDL_image 2.0 wrapper
bazel-remote - A remote cache for Bazel
cl-sdl2 - Common Lisp bindings for SDL2 using C2FFI.
Boost.Beast - HTTP and WebSocket built on Boost.Asio in C++11