Заголовки должны выглядеть так, как будто они находятся в другой папке - PullRequest
0 голосов
/ 01 марта 2019

Итак, у меня есть необычно организованный проект, который ссылается на заголовки из других проектов, таких как:

#include <GeographicLib/Geocentric.hpp>

Дело в том:

  • папка GeographicLib отсутствует
  • проект компилируется с make
  • , когда я пытаюсь импортировать его в CLion, он не компилируется, так как жалуется на отсутствие заголовков

Есть ли способ включить папку в CMakeLists.txt (стандарт, используемый CLion), чтобы сделать этот файл .hpp ссылочным, как в этой папке GeographicLib, без необходимости перемещения или изменения файловфактический код?

Редактировать: (.hpp файл находится в папке типа ../other_proj/src/geolib)

1 Ответ

0 голосов
/ 01 марта 2019

Один из возможных подходов заключается в следующем: создайте фиктивную целевую библиотеку (grouped_includes ниже) и свяжите ее со всеми другими вашими целями (используя target_link_libraries(target grouped_includes))

execute_process(
    COMMAND ${CMAKE_COMMAND} -E create_symlink
            "${CMAKE_SOURCE_DIR}/other_proj/src/geolib"
            "${CMAKE_CURRENT_BINARY_DIR}/GeographicLib") 
add_library(grouped_includes INTERFACE)
target_include_directories(grouped_includes INTERFACE
    $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>)
...