На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
Модераторы: JoeUser, Qraizer, Hsilgos
  
> cmake & boost
    Здрасьте. Расчехлил я понимаешь свои старые наработки, а оказывается в этом мире всё поменялось!

    В общем, есть вот такой простенький скрипт
    ExpandedWrap disabled
      cmake_minimum_required (VERSION 2.8)
       
      project(msck)
       
      list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
       
      include_directories(${CMAKE_CURRENT_SOURCE_DIR})
      include_directories(${CMAKE_CURRENT_BINARY_DIR})
      include_directories("${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/rapidjson/include")
      include_directories("${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/cld2/public")
       
      set(Boost_USE_STATIC_LIBS ON)
      find_package(Boost COMPONENTS program_options system log log_setup thread filesystem)
       
      if(Boost_FOUND)
          message( "-- Found Boost ${Boost_VERSION}" )
          message( "-- Boost includes: ${Boost_INCLUDE_DIRS}" )
          message( "-- Boost libraries: ${Boost_LIBRARIES}" )
          message( "-- use `BOOST_ROOT=<path> cmake ..' to override" )
          include_directories(SYSTEM ${Boost_INCLUDE_DIRS})
          set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBOOST_VERSION=${Boost_VERSION}")
      else()
          message( FATAL_ERROR "Unable to find Boost libraries" )
      endif()
       
      set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto -fvisibility=hidden")
       
      add_subdirectory(protobuf)
      add_subdirectory(worker)
      add_subdirectory(checker)
       
       
      add_executable(msck
          main.cc
          workerpool.cc
      )
       
      target_link_libraries (msck
          worker
          checker
          stats
          ${Boost_LIBRARIES}
      )


    И что же я вижу?
    Он находит мой кастомный буст. Но в Boost_INCLUDE_DIRS пусто! Ну, и как следствие нифига не собирается, хотя cmake отрабатывает без ошибок.
    Вывод такой:
    ExpandedWrap disabled
      -- The C compiler identification is GNU 8.2.1
      -- The CXX compiler identification is GNU 8.2.1
      -- 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: /usr/bin/c++
      -- Check for working CXX compiler: /usr/bin/c++ -- works
      -- Detecting CXX compiler ABI info
      -- Detecting CXX compiler ABI info - done
      -- Detecting CXX compile features
      -- Detecting CXX compile features - done
      -- Found Boost 1.70.0 at /home/mg/81db539dd29fa7cc/libs/boost/lib/cmake/Boost-1.70.0
      --   Requested configuration: QUIET COMPONENTS program_options;system;log;log_setup;thread;filesystem;headers
      -- Found boost_headers 1.70.0 at /home/mg/81db539dd29fa7cc/libs/boost/lib/cmake/boost_headers-1.70.0
      -- Found boost_program_options 1.70.0 at /home/mg/81db539dd29fa7cc/libs/boost/lib/cmake/boost_program_options-1.70.0
      --   libboost_program_options.a
      -- Adding boost_program_options dependencies: headers
      -- Found boost_system 1.70.0 at /home/mg/81db539dd29fa7cc/libs/boost/lib/cmake/boost_system-1.70.0
      --   libboost_system.a
      -- Adding boost_system dependencies: headers
      -- Found boost_log 1.70.0 at /home/mg/81db539dd29fa7cc/libs/boost/lib/cmake/boost_log-1.70.0
      --   libboost_log.a
      -- Adding boost_log dependencies: atomic;chrono;date_time;filesystem;regex;thread;headers
      -- Found boost_atomic 1.70.0 at /home/mg/81db539dd29fa7cc/libs/boost/lib/cmake/boost_atomic-1.70.0
      --   libboost_atomic.a
      -- Adding boost_atomic dependencies: headers
      -- Found boost_chrono 1.70.0 at /home/mg/81db539dd29fa7cc/libs/boost/lib/cmake/boost_chrono-1.70.0
      --   libboost_chrono.a
      -- Adding boost_chrono dependencies: headers
      -- Found boost_date_time 1.70.0 at /home/mg/81db539dd29fa7cc/libs/boost/lib/cmake/boost_date_time-1.70.0
      --   libboost_date_time.a
      -- Adding boost_date_time dependencies: headers
      -- Found boost_filesystem 1.70.0 at /home/mg/81db539dd29fa7cc/libs/boost/lib/cmake/boost_filesystem-1.70.0
      --   libboost_filesystem.a
      -- Adding boost_filesystem dependencies: headers
      -- Found boost_regex 1.70.0 at /home/mg/81db539dd29fa7cc/libs/boost/lib/cmake/boost_regex-1.70.0
      --   libboost_regex.a
      -- Adding boost_regex dependencies: headers
      -- Found boost_thread 1.70.0 at /home/mg/81db539dd29fa7cc/libs/boost/lib/cmake/boost_thread-1.70.0
      --   libboost_thread.a
      -- Adding boost_thread dependencies: headers
      -- Found boost_log_setup 1.70.0 at /home/mg/81db539dd29fa7cc/libs/boost/lib/cmake/boost_log_setup-1.70.0
      --   libboost_log_setup.a
      -- Adding boost_log_setup dependencies: atomic;chrono;date_time;filesystem;log;regex;thread;headers
      Boost 1.67.0 found.
      Found Boost components:
         program_options;system;log;log_setup;thread;filesystem;headers
      -- Found Boost 1.70.0
      -- Boost includes:
      -- Boost libraries:
    Сообщение отредактировано: negram -
      Пропиши в дефайнах cmake'а BOOST_ROOT до нужного корня. Что-то, похоже, он две версии буста находит и ему срывает башню.
      "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
      Морган Фриман
      Реализация шаблонов Jinja2 для C++ Jinja2 C++
        Да не, он всё правильно находит - /home/mg/81db539dd29fa7cc/libs/boost/ - именно то, что я через переменную окружения указываю
        1.67.0 - это минимальная, что я указал.
          В общем, судя по-всему, дело в том, что в бусте 1.70.0 чего-то сломали, а в cmake ещё не обновили FindBoost.cmake (ну соответственно, в старых оно теперь сломано навсегда)
          https://www.bountysource.com/issues/7300771...t-1-70-0-broken

          В качестве вокрэраунда, помогает добавление в CMakeLists.txt
          ExpandedWrap disabled
            set(Boost_NO_BOOST_CMAKE ON)


          но при этом перестают работать новомодные фишечки, типа target_link_libraries(prog boost::filesystem)
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script Execution time: 0,0951 ]   [ 18 queries used ]   [ Generated: 18.11.19, 11:19 GMT ]