ycm-core / YouCompleteMe

A code-completion engine for Vim
http://ycm-core.github.io/YouCompleteMe/
GNU General Public License v3.0
25.45k stars 2.81k forks source link

Fail to compile the BoostPart #1723

Closed Alaya-in-Matrix closed 8 years ago

Alaya-in-Matrix commented 9 years ago

I am trying to compile YCM using such script

#!/bin/bash
cmake -G "Unix Makefiles" -DPATH_TO_LLVM_ROOT=/home/alaya/.softwares/clang+llvm -DUSE_SYSTEM_BOOST=OFF . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
cmake --build . --target ycm_support_libs 

I have g++ 4.8.4 and clang 3.7.0 installed on my ubuntu 14.04, and the system boost version is 1.59

But after running the script, I get such errors:

/home/alaya/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/BoostParts/libs/serialization/src/basic_archive.cpp:44:20: error: expected unqualified-id
BOOST_ARCHIVE_DECL(const char *) 
                   ^
/home/alaya/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/BoostParts/libs/serialization/src/basic_archive.cpp:44:20: error: expected ')'
/home/alaya/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/BoostParts/libs/serialization/src/basic_archive.cpp:44:19: note: to match this '('
BOOST_ARCHIVE_DECL(const char *) 
                  ^
/home/alaya/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/BoostParts/libs/serialization/src/basic_archive.cpp:77:20: error: C++ requires a type specifier for all declarations
BOOST_ARCHIVE_DECL(library_version_type)
                   ^
/home/alaya/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/BoostParts/libs/serialization/src/basic_archive.cpp:77:41: error: expected ';' after top level declarator
BOOST_ARCHIVE_DECL(library_version_type)
                                        ^
                                        ;
4 errors generated.
make[3]: *** [BoostParts/CMakeFiles/BoostParts.dir/libs/serialization/src/basic_archive.cpp.o] Error 1
make[2]: *** [BoostParts/CMakeFiles/BoostParts.dir/all] Error 2
make[1]: *** [ycm/CMakeFiles/ycm_support_libs.dir/rule] Error 2
make: *** [ycm_support_libs] Error 2

The full output of the above script is :

alaya@matrix[.ycm_build] $ ./run.sh  
-- The C compiler identification is GNU 4.8.4
-- The CXX compiler identification is Clang 3.7.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /home/alaya/.softwares/clang+llvm/bin/clang++
-- Check for working CXX compiler: /home/alaya/.softwares/clang+llvm/bin/clang++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
Your C++ compiler supports C++11, compiling in that mode.
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython2.7.so (found suitable version "2.7.6", minimum 
required is "2.6") 
-- Found PythonInterp: /usr/bin/python2 (found suitable version "2.7.6", minimum required is "2.6") 
Using libclang to provide semantic completion for C/C++/ObjC
Using external libclang: /home/alaya/.softwares/clang+llvm-3.7.0-x86_64-linux-gnu-ubuntu-14.04/lib/libcl
ang.so.3.7
-- Found PythonInterp: /usr/bin/python2 (found version "2.7.6") 
-- Looking for include file pthread.h
-- Looking for include file pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Configuring done
-- Generating done
-- Build files have been written to: /home/alaya/.ycm_build
Scanning dependencies of target BoostParts
[  0%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/cpp_regex_traits.cpp.o
[  1%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/regex_raw_buffer.cpp.o
[  1%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/regex_traits_defaults.cpp
.o
[  2%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/static_mutex.cpp.o
[  3%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/cregex.cpp.o
[  3%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/icu.cpp.o
[  4%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/posix_api.cpp.o
[  4%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/c_regex_traits.cpp.o
[  5%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/instances.cpp.o
[  6%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/regex.cpp.o
[  6%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/usinstances.cpp.o
[  7%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/wc_regex_traits.cpp.o
[  8%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/fileiter.cpp.o
[  8%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/w32_regex_traits.cpp.o
[ 10%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/regex_debug.cpp.o
[ 10%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/winstances.cpp.o
[ 11%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/wide_posix_api.cpp.o
[ 12%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/object_operators.cpp.o
[ 12%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/errors.cpp.o
[ 13%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/exec.cpp.o
[ 14%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/tuple.cpp.o
[ 14%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/wrapper.cpp.o
[ 15%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/long.cpp.o
[ 15%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/import.cpp.o
[ 16%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/converter/registry.cpp.o
[ 17%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/converter/builtin_converters.cpp.o
[ 17%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/converter/from_python.cpp.o
[ 19%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/converter/arg_to_python_base.cpp.o
[ 20%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/converter/type_id.cpp.o
[ 20%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/slice.cpp.o
[ 21%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/list.cpp.o
[ 21%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/str.cpp.o
[ 22%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/numeric.cpp.o
[ 23%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/dict.cpp.o
[ 23%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/object/pickle_support.cpp.o
[ 24%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/object/class.cpp.o
[ 24%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/object/enum.cpp.o
[ 25%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/object/iterator.cpp.o
[ 26%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/object/function.cpp.o
[ 26%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/object/life_support.cpp.o
[ 28%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/object/stl_iterator.cpp.o
[ 29%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/object/function_doc_signature.cpp.o
[ 29%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/object/inheritance.cpp.o
[ 30%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/object_protocol.cpp.o
[ 30%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/python/src/module.cpp.o
[ 31%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/smart_ptr/src/sp_collector.cpp.o
[ 32%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/smart_ptr/src/sp_debug_hooks.cpp.o
[ 32%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/atomic/src/lockpool.cpp.o
[ 33%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/date_time/src/gregorian/date_generators.cpp.o
[ 34%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/date_time/src/gregorian/gregorian_types.cpp.o
[ 34%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/date_time/src/gregorian/greg_month.cpp.o
[ 35%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/date_time/src/gregorian/greg_weekday.cpp.o
[ 35%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/date_time/src/posix_time/posix_time_types.cpp.o
[ 37%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/serialization/src/basic_text_iprimitive.cpp.o
[ 38%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/serialization/src/basic_archive.cpp.o
/home/alaya/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/BoostParts/libs/serialization/src/basic_archive.cpp:44:20: error: 
      expected unqualified-id
BOOST_ARCHIVE_DECL(const char *) 
                   ^
/home/alaya/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/BoostParts/libs/serialization/src/basic_archive.cpp:44:20: error: 
      expected ')'
/home/alaya/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/BoostParts/libs/serialization/src/basic_archive.cpp:44:19: note: 
      to match this '('
BOOST_ARCHIVE_DECL(const char *) 
                  ^
/home/alaya/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/BoostParts/libs/serialization/src/basic_archive.cpp:77:20: error: 
      C++ requires a type specifier for all declarations
BOOST_ARCHIVE_DECL(library_version_type)
                   ^
/home/alaya/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/BoostParts/libs/serialization/src/basic_archive.cpp:77:41: error: 
      expected ';' after top level declarator
BOOST_ARCHIVE_DECL(library_version_type)
                                        ^
                                        ;
4 errors generated.
make[3]: *** [BoostParts/CMakeFiles/BoostParts.dir/libs/serialization/src/basic_archive.cpp.o] Error 1
make[2]: *** [BoostParts/CMakeFiles/BoostParts.dir/all] Error 2
make[1]: *** [ycm/CMakeFiles/ycm_support_libs.dir/rule] Error 2
make: *** [ycm_support_libs] Error 2
alaya@matrix[.ycm_build] $  
micbou commented 9 years ago

You are compiling YCM with Clang (which is not supported) instead of GCC. You should remove ~/.softwares/clang+llvm/bin from the PATH for the compilation.

puremourning commented 9 years ago

Really? Compiling ycm with clang is not supported? That's ... ironic? :)

micbou commented 9 years ago

I mean this is not tested in Travis and I know there are issues to compile Boost with Clang. Yeah, that's kind of ironic.

Valloric commented 8 years ago

@micbou We fully support Clang. :) Just because it's not tested on Travis doesn't mean we don't care. We should probably have clang in the Travis matrix for ycmd though.

AFAIK everything compiles fine on Clang, unless there are some problems with system configuration. I compiled every single build of YCM on my machine using clang up until a couple of months ago when I stopped using a Mac as my main workstation at home. It was even Apple's custom clang that comes with xcode.

Valloric commented 8 years ago

Also, note that clang is pretty much the only Apple-supported C & C++ compiler on OS X (which we support).

micbou commented 8 years ago

My mistake. I made the assumption because I thought the compilation issue was from Clang but this is certainly related to the user configuration. Should we close this?

Valloric commented 8 years ago

Yeah, let's close.