При какой ситуации include_directory не работает в CMake? - PullRequest
0 голосов
/ 29 января 2019

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

Следующие работы (с -I у команды compile)

include_directories(
    ${PROJECT_SOURCE_DIR}/src
    ${CMAKE_CURRENT_BINARY_DIR}
)

Следующие работы (с -I у команды compile, то жекак $ {PROJECT_SOURCE_DIR} / abc, путь не существует)

include_directories(
    abc
)

Следующие работы также (/ abc не существует).

include_directories(
    /abc
)

Следующие не ((Я опускаю эту строку)

include_directories(
    /usr/include
)

Итак, при какой ситуации директория include_directories заблокирует какой-либо путь?Спасибо.

1 Ответ

0 голосов
/ 29 января 2019

/usr/include - это стандартный путь включения, поэтому CMake не добавляет его к опции -I - компилятор уже знает этот путь.Все остальные будут добавлены.


Может быть тоже интересно:

Если задана опция SYSTEM, компилятору будет сказано, что каталоги подразумеваются как каталоги системных включений в некоторыхплатформ.Сигнализация этого параметра может привести к таким эффектам, как предупреждения о пропуске компилятором, или к тому, что эти системные файлы с фиксированной установкой не учитываются при вычислениях зависимостей - см. Документы компилятора.( source )

Поэтому вы можете захотеть использовать

include_directories(
    SYSTEM
        /usr/include
)

Но в целом использование SYSTEM не очень хорошая идея.Если вам действительно нужно его использовать - это в основном симптом более серьезной проблемы, лежащей в основе.

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