Многие из проектов с открытым исходным кодом включают набор каталогов с атрибутом CMake SYSTEM
.При этом эти файлы заголовков предоставляются gcc с параметром -isystem
:
include_directories(SYSTEM ${pybind11_INCLUDE_DIRS})
При включении заголовков C ++ с использованием -isystem
возникают проблемы в AIX, поскольку gcc в AIX по умолчанию добавляет неявные extern "C"
дляЗаголовки включены с опцией -isystem
.Это вызывает templates in extern "C"
ошибок в AIX.(Более подробную информацию можно найти по адресу здесь )
Итак, мы пытались выяснить, можем ли мы использовать любую функцию CMake, чтобы использовать опцию -I
для этих заголовков C ++, хотя они включеныс опцией SYSTEM
в AIX.В противном случае нам нужно изменить целый ряд вызовов include_directories()
в этих проектах только для AIX.
Я обнаружил атрибут CMAKE_NO_SYSTEM_FROM_IMPORTED
, который устанавливает значение по умолчанию NO_SYSTEM_FROM_IMPORTED
для целей.Но его установка не переопределяет атрибут SYSTEM
, установленный в include_directories()
.
Пожалуйста, дайте мне знать, правильно ли мы используем CMAKE_NO_SYSTEM_FROM_IMPORTED
и есть ли какая-либо другая опция CMake для достижения вышеуказанного.