CLion не находит заголовки Boost - PullRequest
0 голосов
/ 01 мая 2019
Windows build 18362
CLion 2019.1.2
Boost 1.67
Toolchain mingw-64

Я пытаюсь настроить простой проект в Clion с помощью Boost. Проблема в том, что когда я включаю заголовок повышения #include <boost/log/trivial.hpp>, CLion не может найти файл заголовка.

Мой CMakeLists.txt:

cmake_minimum_required(VERSION 3.14)
project(BoostTest)

set(CMAKE_CXX_STANDARD 14)

add_executable(BoostTest main.cpp)

set(BOOST_ROOT "$ENV{HOMEPATH}/.local/share/boost")
set(Boost_ARCHITECTURE "-x64")
find_package(Boost REQUIRED COMPONENTS log)
message(STATUS "Boost_INCLUDE_DIR: ${Boost_INCLUDE_DIR}")
include_directories(${Boost_INCLUDE_DIR})
target_link_libraries(BoostTest ${Boost_LIBRARIES})

Вывод CMake, кажется, указывает, что все найдено правильно:

C:\Users\michael\AppData\Local\JetBrains\Toolbox\apps\CLion\ch-0\191.6707.69\bin\cmake\win\bin\cmake.exe -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - MinGW Makefiles" C:\Users\michael\projects\sml\BoostTest
-- The C compiler identification is GNU 8.1.0
-- The CXX compiler identification is GNU 8.1.0
-- Check for working C compiler: C:/mingw/mingw64/bin/gcc.exe
-- Check for working C compiler: C:/mingw/mingw64/bin/gcc.exe -- 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: C:/mingw/mingw64/bin/g++.exe
-- Check for working CXX compiler: C:/mingw/mingw64/bin/g++.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - found
-- Found Threads: TRUE  
-- Boost version: 1.67.0
-- Found the following Boost libraries:
--   log
--   date_time
--   log_setup
--   system
--   filesystem
--   thread
--   regex
--   chrono
--   atomic
-- Boost_INCLUDE_DIR: /Users/michael/.local/share/boost/include/boost-1_67
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/michael/projects/sml/BoostTest/cmake-build-debug

Но CLion все еще не может найти файл заголовка в операторе включения. Заголовочные файлы действительно присутствуют в месте, указанном в Boost_INCLUDE_DIR. Я новичок в Windows и CLion, и, возможно, мне не хватает некоторых действительно базовых, но я не вижу этого. Есть какие-нибудь подсказки?

1 Ответ

0 голосов
/ 02 мая 2019

Получив эту команду из командной строки, я пришел к выводу, что это ошибка CLion. Если каталог включения не включает обозначение диска (т. Е. C:/), CLion не находит файлы заголовков.

Вот CMakeLists.txt, который работает для CLion:

cmake_minimum_required(VERSION 3.14)
project(boost-test)

set(CMAKE_CXX_STANDARD 14)
add_executable(boost-test main.cpp)

set(Boost_USE_STATIC_LIBS   ON)
find_package(Boost REQUIRED COMPONENTS log)
if (Boost_FOUND)
    message(STATUS "Boost_INCLUDE_DIRS: ${Boost_INCLUDE_DIRS}")
    include_directories("C:${Boost_INCLUDE_DIRS}")
    target_link_libraries(boost-test ${Boost_LIBRARIES})
endif()

Этот же файл работает из командной строки без хакерских C:, добавленных к include_directories.

Обратите внимание, что даже без C: CLion будет прекрасно собирать и запускать код. Так что проблема, похоже, заключается только в поиске файлов заголовков на основе include_directories().

...