Почему CMakeLists не выдает предупреждение / ошибку (во время компиляции), если один из путей в include_directories не существует? - PullRequest
0 голосов
/ 03 октября 2019

В моем CMakeLists.txt у меня много путей под include_directories(). Я хочу видеть ошибку или предупреждение, когда он сталкивается с несуществующим путем. Так что я могу очистить мой CMakeLists.txt. Есть несколько CMakeLists.txt, которые я хочу убрать. Мой include_directories выглядит следующим образом:

include_directories(
  "inc"
  "../../../../../../a/b/c/d/e/f/inc"
  "../../../../../../a/b/c/d/l/p/inc"
  "../../../../../../a/b/c/d/l/o/inc"
  .
  .
  .
  .
  .
  .
  .
  .

 )

Путь "inc" не существует в текущей ветви CMakeLists.txt, но не выдает ошибку.

Iдумаю CMakeLists.txt игнорирует пустые строки в include_directories().

1 Ответ

1 голос
/ 03 октября 2019

Передачи CMake включают в себя каталоги, расположенные дальше от системы сборки, и не заботятся об их существовании.

Однако вы можете сделать это самостоятельно с помощью некоторого кода. Функция include_directories помещает список в переменную INCLUDE_DIRECTORIES , которую вы можете повторять:

get_property(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)
FOREACH(dir ${dirs})
  IF(NOT EXISTS ${dir})
     message(SEND_ERROR "directory '" ${dir} "' does not exist.")
  ENDIF(NOT EXISTS ${dir})
ENDFOREACH(dir)

Живая демонстрация .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...