From 1df2a5d360063b45ee0dac02365425dcc702b372 Mon Sep 17 00:00:00 2001 From: Strahinja Val Markovic Date: Mon, 9 Jul 2012 13:58:56 -0700 Subject: [PATCH] Using cmake_cxx_flags instead of add_definitions --- autoload/youcompleteme.vim | 1 + cpp/BoostParts/CMakeLists.txt | 2 +- cpp/CMakeLists.txt | 26 +++++++++++++++++--------- cpp/ycm/CMakeLists.txt | 9 ++++++++- cpp/ycm/tests/CMakeLists.txt | 3 ++- 5 files changed, 29 insertions(+), 12 deletions(-) diff --git a/autoload/youcompleteme.vim b/autoload/youcompleteme.vim index 8d20e02b..8d612be2 100644 --- a/autoload/youcompleteme.vim +++ b/autoload/youcompleteme.vim @@ -30,6 +30,7 @@ function! youcompleteme#Enable() augroup youcompleteme autocmd! autocmd CursorMovedI * call s:OnMovedI() + " BufWinEnter/Leave? autocmd BufRead,BufEnter * call s:OnBufferVisit() autocmd CursorHold,CursorHoldI * call s:OnCursorHold() augroup END diff --git a/cpp/BoostParts/CMakeLists.txt b/cpp/BoostParts/CMakeLists.txt index ae3b357d..aeb94c92 100644 --- a/cpp/BoostParts/CMakeLists.txt +++ b/cpp/BoostParts/CMakeLists.txt @@ -77,7 +77,7 @@ add_library( BoostParts ${SOURCES} ) if( CMAKE_COMPILER_IS_GNUCXX OR COMPILER_IS_CLANG ) # No warnings. We just use Boost as is so warnings coming from it are just # noise. - add_definitions( -w ) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w") endif() ############################################################################# diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 180f2bfa..51b96bf7 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -21,19 +21,20 @@ project( YouCompleteMe ) # This is needed so that on macs, the library is built in both 32 bit and 64 bit # versions. Without this python might refuse to load the module, depending on # how python was built. -# On Mac, boost needs to be compiled universal as well. For brew, that's +# On Mac, boost needs to be compiled universal as well, if used instead of the +# included BoostParts lib. For brew, that's # "brew install boost --universal" set( CMAKE_OSX_ARCHITECTURES "i386;x86_64" ) -# Force release build, speed is of the essence -if ( NOT CMAKE_BUILD_TYPE ) - set( CMAKE_BUILD_TYPE RELEASE ) -endif() - if ( CMAKE_CXX_COMPILER_ID STREQUAL "Clang" ) set( COMPILER_IS_CLANG true ) endif() +# Force release build by default, speed is of the essence +if ( NOT CMAKE_BUILD_TYPE ) + set( CMAKE_BUILD_TYPE Release ) +endif() + # Determining the presence of C++11 support in the compiler set( CPP11_AVAILABLE false ) if ( CMAKE_COMPILER_IS_GNUCXX ) @@ -46,16 +47,23 @@ elseif( COMPILER_IS_CLANG ) set( CPP11_AVAILABLE true ) endif() +# When used with Clang, adding the -std=c++0x flag to CMAKE_CXX_FLAGS will cause +# the compiler to output a warning during linking: +# clang: warning: argument unused during compilation: '-std=c++0x' +# This is caused by cmake passing this flag to the linking stage which it +# shouldn't do. It's ignored so it does no harm, but the warning is annoying and +# there's no way around the problem (the flag is correctly used during the +# compilation stage). We could use add_definitions(-std=c++0x), but this will +# break the llvm build since the flag will then be used when compiling C code +# too. Sadly there's no way around the warning. if ( CPP11_AVAILABLE ) message( "Your C++ compiler supports C++11, compiling in that mode." ) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") + set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x" ) else() message( "Your C++ compiler does NOT support C++11, compiling in C++03 mode." ) endif() -#-Wc++11-extensions - add_subdirectory( llvm ) add_subdirectory( BoostParts ) add_subdirectory( ycm ) diff --git a/cpp/ycm/CMakeLists.txt b/cpp/ycm/CMakeLists.txt index c146de95..13a7aa21 100644 --- a/cpp/ycm/CMakeLists.txt +++ b/cpp/ycm/CMakeLists.txt @@ -80,7 +80,14 @@ set_target_properties( ${PROJECT_NAME} PROPERTIES if( CMAKE_COMPILER_IS_GNUCXX OR COMPILER_IS_CLANG ) # We want all warnings, and warnings should be treated as errors - add_definitions( -Wall -Wextra -Werror ) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Werror") +endif() + +############################################################################# + +# We want warnings if we accidentally use C++11 features +if ( COMPILER_IS_CLANG ) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wc++11-extensions") endif() ############################################################################# diff --git a/cpp/ycm/tests/CMakeLists.txt b/cpp/ycm/tests/CMakeLists.txt index 9444b4ce..9b17c22d 100644 --- a/cpp/ycm/tests/CMakeLists.txt +++ b/cpp/ycm/tests/CMakeLists.txt @@ -20,7 +20,8 @@ cmake_minimum_required( VERSION 2.8 ) # The gtest library triggers these silly warnings, so we turn them off if ( COMPILER_IS_CLANG ) - add_definitions( -Wno-long-long -Wno-variadic-macros ) + set( CMAKE_CXX_FLAGS + "${CMAKE_CXX_FLAGS} -Wno-long-long -Wno-variadic-macros" ) endif() add_subdirectory( gmock )