• Harris Hancock's avatar
    Use target_compile_features to request C++11 · 1d0d1c3b
    Harris Hancock authored
    Projects which use Cap'n Proto require C++11, because they must be able to
    compile our headers. Old gcc defaults to C++98, forcing users to manually
    specify the -std=gnu++11 flag in their CMake projects. CMake 3.1
    introduced the target_compile_features command which removes this
    necessity by automatically communicating the C++ standard level
    requirement to client projects.
    
    Specifically, if target `kj` requires a C++11 feature publicly, then all
    targets which link to `kj` will also require that C++11 feature, and get
    the -std=gnu++11 flag for free. If that target is a library, such as
    `kj-async`, and `kj-async` links publicly to `kj`, the requirement is also
    transitive to all targets which link to `kj-async`.
    
    Note that CMake's default behavior is to request compiler-specific
    extensions, such as those provided by the -std=gnu++11 flag. You must
    specifically opt out of these extensions. I'm not aware of any way to
    propagate this nuance in CMake, but added a check to at least prevent
    users from compiling Cap'n Proto without extensions.
    
    With this change, the c++/samples/CMakeLists.txt will build with MinGW
    with no change beyond requiring a later version of CMake.
    1d0d1c3b
Name
Last commit
Last update
..
compat Loading commit data...
parse Loading commit data...
std Loading commit data...
CMakeLists.txt Loading commit data...
arena-test.c++ Loading commit data...
arena.c++ Loading commit data...
arena.h Loading commit data...
array-test.c++ Loading commit data...
array.c++ Loading commit data...
array.h Loading commit data...
async-inl.h Loading commit data...
async-io-test.c++ Loading commit data...
async-io-unix.c++ Loading commit data...
async-io-win32.c++ Loading commit data...
async-io.c++ Loading commit data...
async-io.h Loading commit data...
async-prelude.h Loading commit data...
async-test.c++ Loading commit data...
async-unix-test.c++ Loading commit data...
async-unix.c++ Loading commit data...
async-unix.h Loading commit data...
async-win32-test.c++ Loading commit data...
async-win32.c++ Loading commit data...
async-win32.h Loading commit data...
async.c++ Loading commit data...
async.h Loading commit data...
common-test.c++ Loading commit data...
common.c++ Loading commit data...
common.h Loading commit data...
debug-test.c++ Loading commit data...
debug.c++ Loading commit data...
debug.h Loading commit data...
exception-test.c++ Loading commit data...
exception.c++ Loading commit data...
exception.h Loading commit data...
filesystem-disk-generic-test.c++ Loading commit data...
filesystem-disk-old-kernel-test.c++ Loading commit data...
filesystem-disk-test.c++ Loading commit data...
filesystem-disk.c++ Loading commit data...
filesystem-test.c++ Loading commit data...
filesystem.c++ Loading commit data...
filesystem.h Loading commit data...
function-test.c++ Loading commit data...
function.h Loading commit data...
io-test.c++ Loading commit data...
io.c++ Loading commit data...
io.h Loading commit data...
main.c++ Loading commit data...
main.h Loading commit data...
memory-test.c++ Loading commit data...
memory.c++ Loading commit data...
memory.h Loading commit data...
miniposix.h Loading commit data...
mutex-test.c++ Loading commit data...
mutex.c++ Loading commit data...
mutex.h Loading commit data...
one-of-test.c++ Loading commit data...
one-of.h Loading commit data...
refcount-test.c++ Loading commit data...
refcount.c++ Loading commit data...
refcount.h Loading commit data...
string-test.c++ Loading commit data...
string-tree-test.c++ Loading commit data...
string-tree.c++ Loading commit data...
string-tree.h Loading commit data...
string.c++ Loading commit data...
string.h Loading commit data...
test-helpers.c++ Loading commit data...
test-test.c++ Loading commit data...
test.c++ Loading commit data...
test.h Loading commit data...
thread-test.c++ Loading commit data...
thread.c++ Loading commit data...
thread.h Loading commit data...
threadlocal-pthread-test.c++ Loading commit data...
threadlocal-test.c++ Loading commit data...
threadlocal.h Loading commit data...
time.c++ Loading commit data...
time.h Loading commit data...
tuple-test.c++ Loading commit data...
tuple.h Loading commit data...
units-test.c++ Loading commit data...
units.c++ Loading commit data...
units.h Loading commit data...
vector.h Loading commit data...
windows-sanity.h Loading commit data...