Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.90.255.22] |
|
Сообщ.
#1
,
|
|
|
Здрасьте. Расчехлил я понимаешь свои старые наработки, а оказывается в этом мире всё поменялось!
В общем, есть вот такой простенький скрипт 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 отрабатывает без ошибок. Вывод такой: -- 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: |
Сообщ.
#2
,
|
|
|
Пропиши в дефайнах cmake'а BOOST_ROOT до нужного корня. Что-то, похоже, он две версии буста находит и ему срывает башню.
|
Сообщ.
#3
,
|
|
|
Да не, он всё правильно находит - /home/mg/81db539dd29fa7cc/libs/boost/ - именно то, что я через переменную окружения указываю
1.67.0 - это минимальная, что я указал. |
Сообщ.
#4
,
|
|
|
В общем, судя по-всему, дело в том, что в бусте 1.70.0 чего-то сломали, а в cmake ещё не обновили FindBoost.cmake (ну соответственно, в старых оно теперь сломано навсегда)
https://www.bountysource.com/issues/7300771...t-1-70-0-broken В качестве вокрэраунда, помогает добавление в CMakeLists.txt set(Boost_NO_BOOST_CMAKE ON) но при этом перестают работать новомодные фишечки, типа target_link_libraries(prog boost::filesystem) |