Skip to content

Instantly share code, notes, and snippets.

I may be slow to respond.

Fangjun Kuang csukuangfj

I may be slow to respond.
Block or report user

Report or block csukuangfj

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

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

csukuangfj /
Created Apr 22, 2019
create wav file using c++
// author: fangjun kuang <csukuangfj at gmail dot com>
// date: Apr. 22, 2019
// refer to
#include <fstream>
#include <iostream>
typedef struct WAV_HEADER {
/* RIFF Chunk Descriptor */
View RNN-notes
- a blog article
csukuangfj /
Last active Mar 7, 2019
useful tensorflow statements
import tensorflow as tf
csukuangfj /
Last active Feb 28, 2019



  • protobuf for python
  • [C Preprocessor tricks, tips, and idioms][1]
  • [Standard alternative to GCC's ##VA_ARGS trick?][2]
  • [Variadic Macros][3], gcc manual
  • [Appending to VA_ARGS][4]
  • [Comma omission and comma deletion][5]
  • IEEE-754 Floating Point Converter
You can’t perform that action at this time.