Подтвердить что ты не робот

Добавление директорий include в CMake при вызове его из командной строки

Я нахожусь в ситуации, когда мне не следует мешать существующим файлам CMakeLists.txt, но я все равно должен добавить в мою сборку какой-нибудь каталог g++ system.

Другими словами, мне нужно добавить -isystem /path/to/my/include к моим флагам компилятора, но при вызове чего-то вроде cmake ...

Может быть, что-то вроде cmake .. -DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS -isystem /path/to/my/include"? Есть ли способ сделать это?

4b9b3361

Ответ 1

У меня точно такая же проблема. Я нашел два решения:

  1. , предложенный sakra в предыдущем ответе, то есть установка переменной среды с флагами C++:

    export CXXFLAGS=-isystem\ /path/to/my/include
    cmake <path to my sources>
    

    ИЛИ то же самое, но переменная окружения устанавливается только для этого вызова CMake :

    CXXFLAGS=-isystem\ /path/to/my/include cmake <path to my sources>
    

    ВАЖНО: вы должны очистить каталог сборки (т.е. очистить кэш CMake) перед запуском любой из этих форм. Без очистки кэша CMake продолжит использовать ваш кэшированный CMAKE_CXX_FLAGS из предыдущего запуска.

  2. Непосредственная установка CMAKE_CXX_FLAGS в строке cmake:

    cmake -DCMAKE_CXX_FLAGS=-isystem\ /path/to/my/include <path to my sources>
    

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

Ответ 2

Вы можете установить переменную окружения CXXFLAGS перед вызовом CMake.

$ export CXXFLAGS=-isystem\ /path/to/my/include
$ cmake ..

CMake инициализирует переменную кэша CMAKE_CXX_FLAGS флагами из переменной среды. Эта переменная влияет на все типы сборки.

Ответ 3

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

Итак, в моем случае, только это решение работало нормально:

cmake -DCMAKE_CXX_FLAGS=-I\ /path/to/include <path/to/source>